Project import
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..67db2e3 --- /dev/null +++ b/Makefile
@@ -0,0 +1,121 @@ +# +# Copyright (c) 2010-2011 Nest, Inc. +# All rights reserved. +# +# This document is the property of Nest. It is considered +# confidential and proprietary information. +# +# This document may not be reproduced or transmitted in any form, +# in whole or in part, without the express written permission of +# Nest. +# +# Description: +# This file is the make file for libxml2, a C-based library for +# parsing Extensible Markup Language (XML) documents. +# + +BuildConfigSpecialized := No +BuildProductSpecialized := No + +include pre.mak + +PackageName := libxml2 + +PackageExtension := tar.gz +PackageSeparator := - + +PackageArchive := $(PackageName).$(PackageExtension) +PackageSourceDir := $(PackageName)$(PackageSeparator)$(PackageVersion) + +PackageBuildMakefile = $(call GenerateBuildPaths,Makefile) + +CleanPaths += $(PackageLicenseFile) + +ZlibDir := sw/tps/zlib +ZlibSearchPath := $(call GenerateResultPaths,$(ZlibDir),usr) + +all: $(PackageDefaultGoal) + +# Generate the package license contents. + +$(PackageSourceDir)/COPYING: source + +$(PackageLicenseFile): $(PackageSourceDir)/COPYING + $(copy-result) + +# Extract the source from the archive and apply patches, if any. + +$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths) + $(expand-and-patch-package) + +# Prepare the sources. + +.PHONY: source +source: | $(PackageSourceDir) + +# Patch the sources, if necessary. + +.PHONY: patch +patch: source + +# Generate the package build makefile. + +$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) + $(Verbose)cd $(BuildDirectory) && \ + $(CURDIR)/$(PackageSourceDir)/configure \ + CC="$(CC)" CXX="$(CXX)" AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) \ + INSTALL="$(INSTALL) $(INSTALLFLAGS)" \ + --build=$(HostTuple) \ + --host=$(TargetTuple) \ + --with-zlib=$(ZlibSearchPath) \ + --without-python \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var + +# Configure the source for building. + +.PHONY: configure +configure: source $(PackageBuildMakefile) + +# Build the source. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. + +.PHONY: build +build: configure + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) all + +# Stage the build to a temporary installation area. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. +# +# We explictly remove 'libxml2.la' because some packages that depend +# on libxml2 use libtool. If libtool finds a '*.la' file for a +# library, it uses the value of 'libdir=<dir>' it finds. In our case, +# since '--prefix=/usr' this value is '/usr/lib'. It then resolves +# '-llibxml2' to '/usr/lib/libxml2.so'. In a cross-compilation +# environment, this is likely to be neither the right architecture nor +# the right version to link against. In short, we lose. +# +# We could also handle this by removing DESTDIR and setting the prefix +# to $(ResultDirectory); however, that results in libtool hard-coding +# $(ResultDirectory) as the RPATH in the linked executables which is +# NOT what we want either. We lose again. +# +# By removing the '*.la' file, we win by ensuring neither a misdirected +# link nor an RPATH. + +.PHONY: stage +stage: build | $(ResultDirectory) + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install + $(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libxml2.la) + +clean: + $(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir) + $(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory) + $(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory) + +include post.mak
diff --git a/libxml2-2.7.7/AUTHORS b/libxml2-2.7.7/AUTHORS new file mode 100644 index 0000000..cf2e9a6 --- /dev/null +++ b/libxml2-2.7.7/AUTHORS
@@ -0,0 +1,5 @@ +Daniel Veillard <daniel@veillard.com> +Bjorn Reese <breese@users.sourceforge.net> +William Brack <wbrack@mmm.com.hk> +Igor Zlatkovic <igor@zlatkovic.com> for the Windows port +Aleksey Sanin <aleksey@aleksey.com>
diff --git a/libxml2-2.7.7/COPYING b/libxml2-2.7.7/COPYING new file mode 100644 index 0000000..417e955 --- /dev/null +++ b/libxml2-2.7.7/COPYING
@@ -0,0 +1,27 @@ +Except where otherwise noted in the source code (e.g. the files hash.c, +list.c and the trio files, which are covered by a similar licence but +with different Copyright notices) all the files are: + + Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Daniel Veillard shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from him. +
diff --git a/libxml2-2.7.7/ChangeLog b/libxml2-2.7.7/ChangeLog new file mode 100644 index 0000000..36045e6 --- /dev/null +++ b/libxml2-2.7.7/ChangeLog
@@ -0,0 +1,19678 @@ +Fri Jul 10 16:11:34 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a regression in entity parsing when using the reader + introduced because we were not reusing _private on entities parsing + context + +Thu Jul 9 10:21:00 CEST 2009 Daniel Veillard <daniel@veillard.com> + + Aleksey Sanin support for c14n 1.1 + * c14n.c include/libxml/c14n.h: adds support for C14N 1.1, + new flags at the API level + * runtest.c Makefile.am testC14N.c xmllint.c: add support in CLI + tools and test binaries + * result/c14n/1-1-without-comments/* test/c14n/1-1-without-comments/*: + add a new batch of tests + +Thu Jul 9 08:52:35 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * config.h.in: update of libtool seems to have modified it + * python/libxml2class.txt: python update modified the order + of classes apparently + +Thu Jul 9 08:43:06 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * tree.c: avoid calling xmlAddID with NULL values + * parser.c: add a few xmlInitParser in some entry points + +Fri Jun 19 19:51:08 CEST 2009 Rob Richards <rrichards@cdatazone.org> + + * parser.c: use options from current parser context when creating + a parser context within xmlParseCtxtExternalEntity + * xmlwriter.c: fix error message when unable to create output file + +Thu Jun 4 11:17:23 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * c14n.c debugXML.c doc/examples/io2.c parser.c schematron.c + valid.c xmlschemas.c xmlwriter.c xpath.c: use %s to printf string + patch by Christian Persch, fixes #581612 + +Thu Jun 4 11:06:07 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * parser.c threads.c: change the threading initialization sequence + as suggested by Igor Novoseltsev to avoid crash if xmlInitParser() + is called from a thread which is not the main one, should fix + #584605 + +Fri May 15 17:54:48 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: make sure we keep line numbers fixes #580705 + based Aaron Patterson patch + +Tue May 12 09:13:58 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: a broken HTML table attributes initialization, + fixes #581803, by Roland Steiner <rolandsteiner@google.com> + +Tue May 12 08:54:20 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * libxml2.doap: adding RDF dope file. + +Tue May 12 08:42:52 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * configure.in: adapt the extra version detection code to git + +Wed Apr 29 16:09:38 CEST 2009 Rob Richards <rrichards@cdatazone.org> + + * parser.c: do not set error code in xmlNsWarn + +Wed Apr 15 11:18:24 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h include/libxml/xmlwriter.h + include/libxml/relaxng.h include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in include/libxml/valid.h + include/libxml/xmlschemas.h include/libxml/xmlerror.h: change + ATTRIBUTE_PRINTF into LIBXML_ATTR_FORMAT to avoid macro name + collisions with other packages and headers as reported by + Belgabor and Mike Hommey + +Thu Apr 2 13:57:15 CEST 2009 Daniel Veillard <daniel@veillard.com> + + * error.c: fix structured error handling problems #564217 + +Thu Mar 26 19:08:08 CET 2009 Rob Richards <rrichards@cdatazone.org> + + * parser.c: use options from current parser context when creating + an entity parser context + +Wed Mar 25 11:40:34 CET 2009 Daniel Veillard <daniel@veillard.com> + + * doc/*: updated SVN URL for GNOME as pointed by Vincent Lefevre + and regenerated docs + +Wed Mar 25 11:21:26 CET 2009 Daniel Veillard <daniel@veillard.com> + + * parser.c: hide the nbParse* variables used for debugging + as pointed by Mike Hommey + +Wed Mar 25 10:50:05 CET 2009 Daniel Veillard <daniel@veillard.com> + + * include/wsockcompat.h win32/Makefile.bcb xpath.c: fixes for + Borland/CodeGear/Embarcadero compilers by Eric Zurcher + +Wed Mar 25 10:43:07 CET 2009 Daniel Veillard <daniel@veillard.com> + + * xpath.c: xmlXPathRegisterNs should not allow enpty prefixes + +Mon Mar 23 20:27:15 CET 2009 Daniel Veillard <daniel@veillard.com> + + * tree.c: add a missing check in xmlAddSibling, patch by Kris Breuker + * xmlIO.c: avoid xmlAllocOutputBuffer using XML_BUFFER_EXACT which + leads to performances problems especially on Windows. + +Tue Mar 3 14:30.28 HKT 2009 William Brack <wbrack@mmm.com.hk> + + * trio.h: changed include of config.h to be surrounded by + quotation marks #570806 + +Sat Feb 21 10:20:34 CET 2009 Daniel Veillard <daniel@veillard.com> + + * threads.c parser.c: more warnings about xmlCleanupThreads and + xmlCleanupParser to avoid troubles like #571409 + +Fri Feb 20 09:40:04 CET 2009 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: cleanups and error reports when xmlTextWriterVSprintf + fails, by Jinmei Tatuya + +Fri Feb 20 09:18:56 CET 2009 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: remove a couple of leaks on errors reported by + Jinmei Tatuya + +Sun Jan 18 22:37:59 CET 2009 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/xml.html doc/*: preparing 0.7.3 release + * include/libxml/parserInternals.h SAX2.c: fix a typo in a name + +Sun Jan 18 21:48:28 CET 2009 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h include/libxml/xmlwriter.h + include/libxml/relaxng.h include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in include/libxml/valid.h + include/libxml/xmlschemas.h include/libxml/xmlerror.h: + port patch from Marcus Meissner to add gcc checking for + printf like functions parameters, should fix #65068 + * doc/apibuild.py doc/*: modified the script accordingly + and regenerated + * xpath.c xmlmemory.c threads.c: fix a few warnings + +Sun Jan 18 20:40:42 CET 2009 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlwin32version.h.in: windows header should + get the same define + +Sun Jan 18 18:22:33 CET 2009 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlversion.h.in include/libxml/xmlmemory.h: + apply patch from Marcus Meissner to add gcc attribute alloc_size + should fix #552505 + * doc/apibuild.py doc/* testapi.c: regenerate the API + * include/libxml/parserInternals.h: fix a comment problem raised + by apibuild.py + +Sun Jan 18 16:39:01 CET 2009 Daniel Veillard <daniel@veillard.com> + + * threads.c: also remove pthread key when stopping thread + support, patch based on Alex Ott one should fix #564723 + +Sun Jan 18 15:55:18 CET 2009 Daniel Veillard <daniel@veillard.com> + + * threads.c: patch from Daniel Zimmermann fixing a memory leak + in an edge case, solves #562230 + +Sun Jan 18 15:06:05 CET 2009 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parserInternals.h SAX2.c: add a new define + XML_MAX_TEXT_LENGTH limiting the maximum size of a single text + node, the defaultis 10MB and can be removed with the HUGE + parsing option + +Mon Jan 05 18:28:41 CET 2009 Rob Richards <rrichards@cdatazone.org> + + * include/libxml/parser.h parser.c: add XML_PARSE_OLDSAX parser + option to enable pre 2.7 SAX behavior. + +Wed Dec 31 23:11:37 CET 2008 Rob Richards <rrichards@cdatazone.org> + + * tree.c: set doc on last child tree in xmlAddChildList for + bug #546772. Fix problem adding an attribute via with xmlAddChild + reported by Kris Breuker. + +Sun Dec 27 14:16:13 CET 2008 Rob Richards <rrichards@cdatazone.org> + + * xmlwriter.c: fix indenting in xmlTextWriterFullEndElement for + bug# 554353. + +Thu Nov 27 16:24:52 CET 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h tree.c python/generator.py: adds + element traversal support + * valid.c: avoid a warning + * doc/*: regenerated + +Mon Nov 17 16:56:18 CET 2008 Daniel Veillard <daniel@veillard.com> + + * SAX2.c parser.c: fix for CVE-2008-4226, a memory overflow + when building gigantic text nodes, and a bit of cleanup + to better handled out of memory problem in that code. + * tree.c: fix for CVE-2008-4225, lack of testing leads to + a busy loop test assuming one have enough core memory. + +Thu Nov 6 14:34:35 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: Matthias Kaehlcke reported a build problem when + not compiling HTML support in. + +Fri Oct 17 15:24:08 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/Makefile.am: patch from Adrian Bunk which + adds --disable-rebuild-docs to avoid rebuilding them + +Fri Oct 3 09:43:45 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* NEWS: preparing the release of 2.7.2 + * dict.c: fix the Solaris portability issue + * parser.c: additional cleanup on #554660 fix + * test/ent13 result/ent13* result/noent/ent13*: added the + example in the regression test suite. + * HTMLparser.c: handle leading BOM in htmlParseElement() + +Thu Oct 2 22:53:39 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a nasty bug introduced when cleaning up + entities processing in 2.7.x , fixes #554660 + +Thu Sep 25 18:04:20 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix an HTML parsing error on large data sections + reported by Mike Day + * test/HTML/utf8bug.html result/HTML/utf8bug.html.err + result/HTML/utf8bug.html.sax result/HTML/utf8bug.html: add the + reproducer to the test suite + +Thu Sep 25 17:35:57 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * runxmlconf.c: fix compilation if XPath is not included + +Thu Sep 25 16:54:04 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: patch from Riccardo Scussat fixing custom error + handlers problems. + +Thu Sep 25 16:30:11 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlsave.h xmlsave.c: new options to serialize + as XML/HTML/XHTML and restore old entry point behaviours + +Mon Sep 1 16:49:05 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/news.html configure.in python/setup.py NEWS: + prepare release of 2.7.1 + +Mon Sep 1 15:35:13 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * schematron.c xpath.c: applied a couple of patches from Martin + avoiding some leaks, fixinq QName checks in XPath, XPath debugging + and schematron code cleanups. + * python/tests/Makefile.am python/tests/xpathleak.py: add the + specific regression tests, just tweak it to avoid output by default + +Mon Sep 1 15:02:05 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * trionan.c: Borland C fix from Moritz Both + * testapi.c: regenerate, workaround a problem for buffer testing + * xmlIO.c HTMLtree.c: new internal entry point to hide even better + xmlAllocOutputBufferInternal + * tree.c: harden the code around buffer allocation schemes + * parser.c: restore the warning when namespace names are not absolute + URIs + * runxmlconf.c: continue regression tests if we get the expected + number of errors + * Makefile.am: run the python tests on make check + * xmlsave.c: handle the HTML documents and trees + * python/libxml.c: convert python serialization to the xmlSave APIs + and avoid some horrible hacks + +Sat Aug 30 16:58:40 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in, doc/*: preparing 2.7.0 release + * tree.c: remove some testing traces + * parser.c xmlIO.c xmlschemas.c: remove some warnings + +Sat Aug 30 14:50:16 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h tree.c: make a new kind of buffer where + shrinking and adding in head can avoid reallocation or full + buffer memmoves + * encoding.c xmlIO.c: use the new kind of buffers for output + buffers + +Sat Aug 30 10:18:13 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * doc/* testapi.c: regenerated + +Fri Aug 29 21:53:12 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * doc/examples/reader3.c: patch from Robert Schwebel , allows to + compile the example if configured without output support fixes + #545582 + * Makefile.am: add testrecurse to the make check tests + * HTMLparser.c: if the parser got a encoding argument it should be + used over what the meta specifies, patch fixing #536346 + +Fri Aug 29 14:41:38 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: a couple more fixes + * nanohttp.c nanoftp.c: patch from Andreas Färber to compile on Haiku + fixes #527880 + * doc/examples/*: regenerated + +Thu Aug 28 17:31:46 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/parser.h: completely different fix for + the recursion detection based on entity density, big cleanups + in the entity parsing code too + * result/*.sax*: the parser should not ask for used defined versions + of the predefined entities + * testrecurse.c: automatic test for entity recursion checks + * Makefile.am: added testrecurse + * test/recurse/lol* test/recurse/good*: a first set of tests for + the recursion + +Wed Aug 27 21:55:34 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlerror.h parser.c: a bit of cleanup and + added checks based on the regression tests of the xmlconf suite + +Wed Aug 27 19:22:35 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c: bug in parsing RFC 3986 uris with port numbers + +Wed Aug 27 17:30:48 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in Makefile.am: add an --with-coverage configure option + and a 'make cov' target based on gcc profiling and the lcov + tool. Currently at 68.9% coverage out of 'make check' and + runsuite executions. + * xmlreader.c: remove warnings due to C++ comments + +Wed Aug 27 15:00:54 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parserInternals.h parser.c: cleanup entity + pushing error handling based on a patch from Ashwin + +Wed Aug 27 13:41:26 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * threads.c: fix a small initialization problem raised by Ashwin + * testapi.c gentest.py: increase testing especially for document + with an internal subset, and entities + * tree.c: fix a deallocation issue when unlinking entities from + a document. + * valid.c: fix a missing entry point test not found previously. + * doc/*: regenerated the APIs, docs etc. + +Tue Aug 26 15:02:58 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h parser.c xmllint.c: strengthen some + of the internal parser limits, add an XML_PARSE_HUGE option + to bypass them all. More internal parser limits will still need + to be added. + +Tue Aug 26 09:42:08 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: add the testchar to 'make check' + * xmlschemas.c: Volker Grabsch pointed out a typo + * xmlregexp.c: production [19] from XML Schemas regexps were a + mistake removed in version REC-xmlschema-2-20041028, Volker Grabsch + provided a patch to remove it + * test/schemas/regexp-char-ref_0.xml test/schemas/regexp-char-ref_0.xsd + test/schemas/regexp-char-ref_1.xsd result/schemas/regexp-char-ref_0_0 + result/schemas/regexp-char-ref_1_0: Volker Grabsch also provided + regession tests for this + +Tue Aug 26 09:25:39 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h xinclude.c xmllint.c: patch based on + Wieant Nielander contribution to add the option of not doing + URI base fixup in XInclude + +Mon Aug 25 16:52:53 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Aswin to fix tree skipping + * include/libxml/entities.h entities.c: fixed a comment and + added a new xmlNewEntity() entry point + * runtest.c: be less verbose + * tree.c: space and tabs cleanups + +Mon Aug 25 10:56:30 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/entities.h entities.c SAX2.c parser.c: rework + the patch to avoid some ABI issue with people allocating + entities structure directly + +Wed Aug 20 19:02:01 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h include/libxml/entities.h entities.c + parserInternals.c parser.c: fix for CVE-2008-3281 + +Sun Aug 10 17:06:13 CEST 2008 Rob Richards <rrichards@ctindustries.net> + + * dict.c: fix non GNUC builds. + +Fri Aug 8 14:13:06 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * makefile.am: adding a check-valgrind target + +Fri Aug 8 14:01:59 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * Makefile.am testdict.c: add the new test in 'make check' and + update it to check subdictionaries processing. + +Fri Aug 8 12:07:20 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * testdict.c: added a program to regression test the dictionary code + * dict.c: improve the lookup efficiency by caching the key. + +Thu Aug 7 18:30:55 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * dict.c: chased and found a couple of nasty issues + +Thu Aug 7 15:51:31 CEST 2008 Sven Herzberg <sven@imendio.com> + + Bug 546629 – runtests doesn't pass on my mac + Reviewed by William M. Brack. + + * runtest.c: use libpthread on Mac OS X as well + +Wed Aug 6 12:24:33 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c: allow [ and ] in fragment identifiers, 3986 disallow them + but it's widely used for XPointer, and would break DocBook + processing among others + +Wed Aug 6 11:32:21 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * dict.c: change the big key algorithm to work properly with QName + too, fix a bug with dict size and sub dictionaries + +Mon Aug 4 17:27:27 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c include/libxml/uri.h: rewrite the URI parser to update to + rfc3986 (from 2396) + * test/errors/webdav.xml result/errors/webdav.xml*: removed the + error test, 'DAV:' is a correct URI under 3986 + * Makefile.am: small cleanup in make check + +Thu Jul 31 21:49:45 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * runxmlconf.c: more progresses against the official regression tests + * runsuite.c: small cleanup for non-leak reports + * include/libxml/tree.h: parsing flags and other properties are + now added to the document node, this is generally useful and + allow to make Name and NmToken validations based on the parser + flags, more specifically the 5th edition of XML or not + * HTMLparser.c tree.c: small side effects for the previous changes + * parser.c SAX2.c valid.c: the bulk of teh changes are here, + the parser and validation behaviour can be affected, parsing + flags need to be copied, lot of changes. Also fixing various + validation problems in the regression tests. + +Thu Jul 31 10:15:53 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * runxmlconf.c: added a skipped list, insert rmt-ns10-035 + * Makefile.am: improve 'make check' + * include/libxml/xmlerror.h parser.c: clean up namespace errors + checking and reporting, errors when a document is labelled + as UTF-16 while it is parsed as UTF-8 and no encoding was given + explicitely. + * result/errors/webdav.xml.*: some warnings are no recategorized + as Namespace errors + +Wed Jul 30 14:55:54 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlmemory.h xmlmemory.c: add xmlMemDisplayLast to + help debug incremental memory leaks, and some cleanups + * runxmlconf.c: use that new call and avoid ever touching the + system catalog in the regression tests + +Wed Jul 30 14:33:33 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/xmlerror.h: an XML-1.0 document can't load + an 1.1 entity + * runxmlconf.c: when using entities make sure we load them + +Tue Jul 29 18:43:07 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a bug not detecting cross entity comments probably + when comment parsing got optimized. + * Makefile.am: add make check + * runxmlconf.c: fix the log file name + +Tue Jul 29 18:09:26 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * runxmlconf.c Makefile.am: add a C program to run the W3C test + suite, work in progress + * xmllint.c: add a new option --oldxml10 to use the old parser + * parser.c: fix the XML_PARSE_OLD10 processing of the new option + and a bug in version parsing + +Tue Jul 29 11:12:40 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xpath.c: space and tabs cleanup + +Tue Jul 29 10:59:36 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h include/libxml/xmlerror.h parser.c: + implement XML-1.0 5th edition, add parser option XML_PARSE_OLD10 + to stick to old behaviour + * testapi.c gentest.py: modified slightly and regenerated + * Makefile.am: add testchar + +Thu Jul 24 16:57:20 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * Makefile.am testchar.c Makefile.tests README.tests: add a + new regression test program for testing character ranges and + UTF8 encoding/decoding + +Wed Jul 23 15:32:39 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: fix the build root + +Wed Jul 16 22:28:48 PDT 2008 William Brack <wbrack@mmm.com.hk> + + * pattern.c: fix problem with xmlStreamPop when pattern includes + a "." element (see discussion on libxslt list) + +Mon Jul 7 15:49:59 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fix line number on text nodes, problem raised by Ralf Junker + +Sun Jun 29 17:04:28 CEST 2008 Rob Richards <rrichards@ctindustries.net> + * xmlschemas.c: fix crash with invalid whitespace facet + +Wed Jun 11 10:13:02 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/FAQ.html: add a section in the FAQ about + multithread and xmlCleanupParser + +Tue Jun 10 16:52:17 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * catalog.c: apply a couple of fixes based on a Coverity report + forwarded by Derrick Price. + * VxWorks/README VxWorks/Makefile VxWorks/build.sh: instructions + Makefile, and shell script to build on VxWorks 6.4+ provided by + Jim Wert. + +Tue Jun 3 18:07:13 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/setup.py: apply patch from Martin fixing + python whitespaces + * NEWS: following previous commit rebuilt now in UTF-8 + +Mon Jun 2 17:39:42 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * ChangeLog: patch from Hans de Goede to switch the file to UTF-8 + * doc/news.xsl: switch to generate the NEWS file in UTF-8 instead of + ISO-8859-1 + +Mon May 12 15:12:44 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: avoid a regexp crash, should fix #523738 + +Mon May 12 14:56:06 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c runtest.c testapi.c include/libxml/xmlreader.h + python/types.c python/libxml_wrap.h python/libxml.c: fx compilation + when configured without the reader should fix #513110 + * doc/*: regenerated + +Sat May 3 14:33:29 CEST 2008 Rob Richards <rrichards@ctindustries.net> + + * dict.c: check for stdint.h and define types when using MSVC + +Mon Apr 28 20:06:12 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: applied patch from Ashwin to avoid a potential + double-free + +Thu Apr 24 13:56:53 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied patch from Ashwin fixing a number of realloc problems + * HTMLparser.c: improve handling for misplaced html/head/body + +Tue Apr 22 10:27:17 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * dict.c: improvement on the hashing of the dictionnary, with visible + speed up as the number of strings in the hash increases, work from + Stefan Behnel + +Fri Apr 11 14:44:00 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlschemas.h xmlschemas.c: added new function + xmlSchemaValidCtxtGetParserCtxt based on Holger Kaelberer patch + * doc/apibuild.py doc/*: regenerated the doc, chased why the new + function didn't got any documentation, added more checking in the + generator + * include/libxml/relaxng.h include/libxml/schematron.h + include/libxml/xmlschemas.h include/libxml/c14n.h + include/libxml/xmlregexp.h include/libxml/globals.h + include/libxml/xmlreader.h threads.c xmlschemas.c: various changes + and cleanups following the new reports + + +Thu Apr 10 10:07:00 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: extend the cleanup rule + * xmlschemas.c: space cleanup + +Wed Apr 9 19:43:25 CEST 2008 Rob Richards <rrichards@ctindustries.net> + + * include/wsockcompat.h: support older win32 platforms when building + with newer versions of VS + +Tue Apr 8 16:56:07 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: preparing release of 2.6.32 + +Tue Apr 8 10:19:01 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix a bug introduced when fixing #438208 and reported by + Ashwin + * python/generator.py: fix an infinite loop bug + +Mon Apr 7 14:44:51 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fix a link to XmlNodeType doc reported by Martijn Arts + * docs/*: rebuilt + +Fri Apr 4 18:09:50 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: improve the *Recover* functions documentation + +Thu Apr 3 14:57:15 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: patch from Mark Rowe fixing BOM or encoding detection + in external parsed entities, should fix #440415 + +Thu Apr 3 13:16:01 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix some problems with the *EatName functions when + running out of memory raised by Eric Schrock , should fix #438208 + +Thu Apr 3 12:41:29 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: horror around the definition of the lexical + values for decimal and derived types, fixing to reject empty + values, should fix #503268 + +Thu Apr 3 11:44:57 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * encoding.c: buffer may not be large enough to convert to + UCS4, patch from Christian Fruth , fixes #504015 + +Thu Apr 3 11:02:02 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: apparently it's okay to forget the semicolumn after + entity refs in HTML, fixing char refs parsing accordingly based on + T. Manske patch, this should fix #517653 + +Thu Apr 3 09:30:29 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * error.c: avoid a scary realloc() loop should fix #520383 + +Thu Apr 3 08:22:52 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: more realloc problems pointed out by Ashwin + +Thu Apr 3 07:40:13 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am: applied patch from Mike Hommey fixing distclean, + fixes #520387 + +Thu Apr 3 06:52:32 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xpath.h: small doc improvement for xmlXPathContext + from Jack Jansen, fixes #524759 + * doc/newapi.xsl doc/*: fixed a problem and regenerated the docs + +Tue Apr 1 09:59:22 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * xpath.c: two patches from Alvaro Herrera to avoid problem when + running out of memory in XPath evaluations. + +Mon Mar 31 11:23:19 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: lot of out of memory handling fixes from Ashwin + * elfgcchack.h doc/elfgcchack.xsl: work around a problem with xmlDllMain + * include/libxml/threads.h: indenting cleanups + +Mon Mar 31 10:25:37 CEST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c docs/*: trying to clarify even more the xmlCleanupParser() + use and the memory documentation + +Wed Mar 26 18:39:58 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: changes based on Alex Khesin patch where xmlParseCharRef + seems to not be checked correctly, fixes #520198 + +Wed Mar 26 15:03:49 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: patch from Ashwin to avoid a problem of attribute + redefinition in the DTD. Remove a warning too. + +Wed Mar 26 14:38:31 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fix a problem in externalSubsetSplit with a patch + from Ashwin + +Tue Mar 25 17:48:02 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix various attribute normalisation problems reported + by Ashwin + * result/c14n/without-comments/example-4 + result/c14n/with-comments/example-4: this impacted the result of + two c14n tests :-\ + * test/att9 test/att10 test/att11 result//att9* result//att10* + result//att11*: added 3 specific regression tests coming from the + XML spec revision and from Ashwin + +Tue Mar 25 14:20:49 CET 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c: fix saving for file:///X:/ URI embedding Windows file paths + should fix #524253 + +Mon Mar 24 21:42:33 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a problem reported by Ashwin for system parameter + entities referenced from entities in external subset, add a + specific loading routine. + * test/valid/dtds/external.ent test/valid/dtds/external2.ent + test/valid/t11.xml result/valid/t11.xml*: added the test to + the regression suite + +Mon Mar 24 15:04:54 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fix an XML Schemas crash raised by Stefan Behnel + when testing with W3C test suite + +Mon Mar 24 12:12:00 CET 2008 Daniel Veillard <daniel@veillard.com> + + * threads.c: check some allocation with Ashwin patch + +Wed Mar 19 16:41:52 CET 2008 Daniel Veillard <daniel@veillard.com> + + * vms/build_libxml.com: update from Tycho Hilhorst, should fix #523378 + +Tue Mar 18 09:23:05 CET 2008 Daniel Veillard <daniel@veillard.com> + + * threads.c: check some malloc returns with Ashwin patch, add + error messages and reindent the module. + +Fri Mar 14 15:28:43 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: patch from Ashwin removing duplicate tests + +Fri Mar 14 13:44:29 CET 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/schematron.h include/libxml/xmlerror.h schematron.c: + applied patch from Tobias Minich to allow plugin schematron error + reporting in the normal error system, should fix #513998 + +Fri Mar 14 11:52:09 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c xinclude.c: patch from Vasily Chekalkin fixes memory + leaks, should fix 512647 + +Thu Mar 13 08:17:58 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: found a nasty bug in regexp automata build, + reported by Ashwin and Bjorn Reese + +Wed Mar 12 18:56:22 CET 2008 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: patch from Arnold Hendriks improving parsing of + html within html bogus data, still not a complete fix though + +Wed Mar 12 10:22:01 CET 2008 Daniel Veillard <daniel@veillard.com> + + * python/types.c: fix a memory errro when using namespace nodes + returned from XPath queries, should fix #521699 + * python/tests/Makefile.am python/tests/xpathns.py: add a specific + regression test for it + +Mon Mar 10 16:25:32 CET 2008 Rob Richards <rrichards@ctindustries.net> + + * include/win32config.h: add ICONV_CONST define for win32 build + to satisfy encoding.c change in rev 3693 + +Fri Mar 7 17:45:27 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c parser.c: fix handling of empty CDATA nodes as + reported and discussed around #514181 and associated patches + * test/emptycdata.xml result/emptycdata.xml* + result/noent/emptycdata.xml: added a specific test in the + regression suite. + +Thu Mar 6 15:23:10 CET 2008 Daniel Veillard <daniel@veillard.com> + + * encoding.c: poblem with encoding detection for UTF-16 reported by + Ashwin and found by Bill + * test/valid/dtds/utf16b.ent test/valid/dtds/utf16l.ent + test/valid/UTF16Entity.xml result/valid/UTF16Entity.xml*: added + the example to the regression tests + +Tue Mar 4 14:16:38 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: patch from Alex Khesin fixing CDATA output after + a text node. + * parser.c: fixed the comment for xmlParserCleanup + * globals.c: fixed indentation + +Mon Feb 25 16:42:19 CET 2008 Daniel Veillard <daniel@veillard.com> + + * testModule.c: patch from Florent Guiliani to fix build on + SCO OpenServer + +Thu Feb 21 22:46:08 CET 2008 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: made one of the changes suggested by Brian Krahmer + * testRegexp.c: allow to pass '--' on the command line to allow + regexps starting with the character '-' + +Tue Feb 19 08:49:32 CET 2008 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/tests/Makefile.am: applied cleanup + patches for cross compilation and MinGW from Roumen Petrov + +Sat Feb 16 11:06:54 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fix output bug reported by Petr Pajas and analyzed by + Bill + +Fri Feb 15 09:32:11 CET 2008 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlerror.h tree.c: patch from Julien Charbon + to simplify the processing of xmlSetProp() + +Fri Feb 15 08:45:32 CET 2008 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in encoding.c: patch from Roumen Petrov + to detect if iconv() needs a const for the second parameter + +Fri Feb 15 08:41:31 CET 2008 Daniel Veillard <daniel@veillard.com> + + * macos/src/XMLTestPrefix2.h win32/Makefile.msvc: EOL cleanups + from Florent Guiliani + +Wed Feb 13 10:56:38 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied patch from Alfred Mickautsch to flush the + output at the end of document. + +Fri Feb 8 11:57:03 CET 2008 Daniel Veillard <daniel@veillard.com> + + * doc/examples/examples.xml: regenerated, it was truncated. + +Fri Feb 8 11:47:18 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlmodule.c: apply simple patch from Carlo Bramini to avoid + compilation problems with Mingw32 + +Fri Feb 8 11:33:15 CET 2008 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: apply patch from Andrew Tosh to fix behaviour + when '.' is used in a posCharGroup + * test/schemas/poschargrp0_0.* result/schemas/poschargrp0_0_0*: + added the test to the regression suite + +Fri Feb 8 10:54:09 CET 2008 Daniel Veillard <daniel@veillard.com> + + * dict.c: applied patch from Florent Guilian to remove an + useless mutex in the xmlDict structure. + +Wed Feb 6 17:00:20 CET 2008 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: another leak reported by Ashwin + * xinclude.c: fixed the behaviour when XIncluding a fragment + of the current document, patch from Chris Ryan + +Wed Feb 6 12:10:08 HKT 2008 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: added space for port number (when not 80) in + xmlNanoHTTPMethodRedir, plus a few more comments. Should + fix #514521. + +Tue Feb 5 09:41:46 CET 2008 Daniel Veillard <daniel@veillard.com> + + * schemas.c: apply fix suggested by Ashwin correcting a cut-n-paste + error about the SAX callback in cdataBlockSplit when streaming + XSD validation + +Tue Feb 5 09:36:46 CET 2008 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied a patch based on Petr Sumbera one to avoid a + problem with paths starting with // + +Mon Feb 4 17:48:30 CET 2008 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/xmlmem.html: added a small section on returning + memory to the kernel by compacting the heap provided by Wolfram Sang + +Fri Jan 25 20:01:42 CET 2007 Rob Richards <rrichards@ctindustries.net> + + * include/win32config.h win32/Makefile.msvc: fix build under VS 2008. + patch by David Wimsey + +Thu Jan 24 15:37:04 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a memeory leak in internal subset parsing with + a fix from Ashwin + * test/errors/content1.xml result/errors/content1.xml*: + add test to regressions + +Fri Jan 11 09:00:09 CET 2008 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/*: preparing release of 2.6.31 + +Fri Jan 11 08:58:49 CET 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: avoid a warning on 64bits introduced earlier + * parserInternals.c: make more checking on the UTF-8 input + +Fri Jan 11 15:37:05 CST 2008 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: avoid stopping parsing when encountering + out of range characters in an HTML file, report and + continue processing instead, should fix #472696 + +Fri Jan 11 15:13:35 CST 2008 Daniel Veillard <daniel@veillard.com> + + * check-relaxng-test-suite2.py check-relaxng-test-suite.py + Makefile.am python/tests/Makefile.am python/Makefile.am + check-xsddata-test-suite.py: patches from John Carr to + start cleaning up 'make diskcheck' problems c.f. #506228 + +Fri Jan 11 14:48:40 CST 2008 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: apply fix from Stefan Kost to avoid a crash + in xmllint, fixes 504284 + +Fri Jan 11 14:39:03 CST 2008 Daniel Veillard <daniel@veillard.com> + + * xml2-config.in: apply patch from Fred Crozat to avoid + outputting -L/usr/lib from xml2-config, fixes #497012 + +Fri Jan 11 14:18:09 CST 2008 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix definition for <embed> to avoid error + when saving back, patch from Stefan Behnel fixing 495213 + +Fri Jan 11 14:06:09 CST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Christian Schmidt fixing a + column counter update problem, fixes #472696 + +Fri Jan 11 13:22:14 CST 2008 Daniel Veillard <daniel@veillard.com> + + * parser.c: handle a erroneous parsing of attributes in + case said attribute has been redeclared in the DTD with a + different type + * hash.c: fix the hash scanner to not crash if a first element + from the hash list is been removed in the callback + +Wed Jan 9 10:15:50 CST 2008 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: fix indentation in xmlTextWriterFullEndElement, + as raised by Felipe Pena, should fix #508156 + +Tue Dec 6 11:07:42 CET 2007 Rob Richards <rrichards@ctindustries.net> + + * pattern.c: fix crash from double free of name for bug #501760 + +Fri Nov 23 11:47:48 CET 2007 Daniel Veillard <daniel@veillard.com> + + * threads.c: remove unused variable in __xmlGlobalInitMutexLock + reported by Hannes Eder + +Mon Nov 19 18:39:26 CET 2007 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: remove a cut-and-paste copy error + +Fri Nov 16 11:55:36 CET 2007 Rob Richards <rrichards@ctindustries.net> + + * globals.c threads.c include/libxml/threads.h: + __xmlGlobalInitMutexDestroy() will free global_init_lock on Win32. + Patch from Marc-Antoine Ruel. + +Tue Nov 13 21:26:27 CET 2007 Rob Richards <rrichards@ctindustries.net> + + * schematron.c: fix crash/leaks from xmlSchematronParse due to improper + schema document ownership for bug #495215 + +Tue Oct 30 21:24:55 CET 2007 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: xmlFree(NULL) should not crash in debug mode + should fix #491651 + +Tue Oct 16 13:58:41 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * testURI.c: add a debug option printing all the fields within + the parsed URI structure + +Wed Oct 10 10:25:52 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: fix to avoid a crash when dumping an attribute from + an XHTML document, patch contributed to fix #485298 + +Tue Aug 28 19:32:28 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: another nasty regexp case fixed. + * test/regexp/ranges2 result/regexp/ranges2: added to regression + suite + +Fri Aug 24 10:58:58 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: Enhanced to include port number (if not == 80) on the + "Header:" URL (bug #469681). + * xmlregexp.c: Fixed a typo causing a warning message. + +Thu Aug 23 22:48:20 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: fix an open() call with creation without 3rd argument + hopefully that interface is never used. + +Thu Aug 23 17:00:49 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/*: preparing release of 2.6.30 + +Thu Aug 23 20:58:28 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed xmlXPathCompOpEvalPositionalPredicate problem + with object caching (bug #469410) + +Thu Aug 23 11:28:38 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c test/schemas/*455953* result/schemas/bug455953*: + applied patch from Frank Gross fixing Schemas IDC import bug + #455953 and also add the test to the regression suite + +Wed Aug 22 18:29:42 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: try to fix for the nth time the automata generation + in case of complex ranges. I suppose that time it is actually okay + +Tue Aug 14 15:51:05 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: aligned xmlSAXUserParseMemory() to match + xmlSAXUserParseFile() logic based on Ashwin post, and ifdef + cleanup + +Tue Aug 14 11:42:27 CEST 2007 Rob Richards <rrichards@ctindustries.net> + + * xmlIO.c: fixed windows path determination (patch from + Roland Schwarz, bug #462877) + * win32/Makefile.mingw win32/configure.js: fixed mingw build + (patch from Roland Schwarz, bug #462877) + +Wed Aug 1 09:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a parser bug where invalid char in comment may + not be detected, reported by Ashwin Sinha + * test/errors/comment1.xml result/errors/comment1.xml*: added + the example to the regression suite + +Thu Jul 26 13:42:26 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: fixed problem reported on bug #460415 + +Thu Jul 19 18:10:58 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * uri.c: applied patch from from Patrik Fimml. Fixes bug #458268. + +Wed Jul 18 11:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: applied patch from bug #454608 from Patrik Fimml. + Fixes bug #454608. + +Wed Jul 11 19:57:59 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch for xsi:nil from Frank Gross, this + should fix bug #358125 + +Wed Jul 4 17:44:20 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: patch from Dodji Seketeli to avoid a leak on repeated + uses of xmlTextWriterStartDocument() + +Tue Jun 26 13:30:50 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fix a crash on solaris when a printf %s with a NULL + argument occurs, should fix #450936 + +Wed Jun 13 13:33:38 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem in previous fix to xmlXPathNodeSetSort + +Tue Jun 12 18:17:28 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * doc/* configure.in NEWS: release of libxml2 2.6.29 + * valid.c: patch from Dagfinn I. Mannsåker for idness of name + in HTML, c.f. bug #305885. + +Tue Jun 12 17:14:08 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fixing bug #319964, parsing of HTML attribute really + should not have namespace processing. + +Tue Jun 12 16:42:14 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the push mode when a big comment occurs before + an internal subset, should close bug #438835 + * test/comment6.xml result//comment6.xml*: added a special + test in the regression suite + +Tue Jun 12 15:41:09 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix bug #414846 where invalid characters in attributes + would sometimes not be detected. + * test/errors/attr4.xml result/errors/attr4.xml*: added a specific + test case to the regression tests + +Tue Jun 12 14:23:24 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am: apply patch from Ryan Hill to cope with changes + in GNU tar, should fix #396751 + +Tue Jun 12 12:03:36 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * python/types.c: try to allow compilation on old python version + should fix #398125 + +Tue Jun 12 11:48:15 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: htmlNodeDumpFormatOutput didn't handle XML_ATTRIBUTE_NODe + fixes bug #438390 + +Tue Jun 12 11:37:55 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: workaround misgenerated file: URIs c.f. #437385 + +Tue Jun 12 11:22:47 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed bug #407436 a crash in a specific case of + Relax-NG validation + +Tue Jun 12 11:12:50 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixed bug #383687, some case of recursion on next + were not caught in the catalog code. + +Tue Jun 12 10:37:42 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed bug #381877, avoid reading over the end + of stream when generating an UTF-8 encoding error. + +Tue Jun 12 10:16:48 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #366161, trivially added the check in + xmlCtxtReset() + +Fri Jun 8 21:48:21 CEST 2007 Rob Richards <rrichards@ctindustries.net> + + * win32/configure.js win32/Makefile.msvc: add --vcmanifest flag (yes/no) + for VC8 build support to embed manifest within files. Under MS VC, build + libxml2_a_dll.lib by default (LIBXML_STATIC_FOR_DLL flag). + +Fri Jun 8 21:37:46 CEST 2007 Rob Richards <rrichards@ctindustries.net> + + * threads.c include/libxml/threads.h: use specified calling convention + for xmlDllMain. Old SDKs (VC6) only support InterlockedCompareExchange. + add xmlDllMain to header for win32 when building for static dll + +Fri Jun 8 10:51:28 CEST 2007 Rob Richards <rrichards@ctindustries.net> + + * xmlwriter.c: fixed problem with namespace declaration being + written more than once per element start tag + +Wed Jun 6 10:18:28 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with xmlXPathNodeSetSort; + fixed problem with xmlXPathNodeTrailingSorted (both bug#413451) + +Wed May 30 22:05:08 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with string value for PI node + (bug #442275) + +Mon May 28 16:14:50 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * uri.c: fix bug reported by François Delyon + +Tue May 22 08:59:48 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * encoding.c: Fixed typo in xmlCharEncFirstLine pointed out + by Mark Rowe (bug #440159) + * include/libxml/xmlversion.h.in: Added check for definition of + _POSIX_C_SOURCE to avoid warnings on Apple OS/X (patch from + Wendy Doyle and Mark Rowe, bug #346675) + * schematron.c, testapi.c, tree.c, xmlIO.c, xmlsave.c: minor + changes to fix compilation warnings - no change to logic. + +Tue May 15 22:18:08 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: small enhancement to last fix, pointed out + by Alex Cornejo + +Tue May 15 12:38:38 PDT 2007 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: fixed problem on gzip streams (bug #438045) + * xpath.c: fixed minor spot of redundant code - no logic change. + +Fri May 11 22:45:18 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: enhanced the coding for xmlXPathCastNumberToString + in order to produce the required number of significant digits + (bug #437179) + +Thu May 10 01:52:42 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * list.c: applied patch to fix xmlListAppend() from + Georges-André SILBER + * valid.c: also fix the place wher it was called. + +Wed May 2 18:47:33 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * parser.c: tried to fix an error problem on entity content failure + reported by Michael Day + +Wed May 2 18:23:35 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * configure.in: typo patch from Bjorn Reese + +Wed May 2 18:12:58 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied patch from Michael Day to add support for + <embed> + +Thu Apr 26 10:58:50 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: Jean-Daniel Dupas pointed a couple of problems + in htmlCreateDocParserCtxt. + +Thu Apr 26 10:36:26 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * uri.c include/libxml/uri.h: patch from Richard Jones to save + the query part in raw form. + * libxml2-python-api.xml: also added accessor for the python bindings + +Wed Apr 25 15:57:32 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am doc/examples/Makefile.am Makefile.am: applied + patch from Richard Jones to for the silent flag on valgrind + when doing "make valgrind" + * xmlregexp.c: raise a regexp error when '\' is misused to escape + a standard character. + +Tue Apr 24 20:15:14 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * tree.c: Richard Jones reported xmlBufferAdd (buf, "", -1), fixing it + +Tue Apr 24 10:59:28 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * uri.c: fix xmlURIUnescapeString comments which was confusing + +Wed Apr 18 09:52:25 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * include/win32config.h libxml.h: new patch from Andreas Stricke to + better integrate support for Windows CE + +Tue Apr 17 16:50:12 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * doc/* configure.in NEWS: release of libxml2 2.6.28 + +Tue Apr 17 14:47:42 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * catalog.c libxml.h win32/wince/wincecompat.h win32/wince/wincecompat.c + xmlIO.c nanohttp.c nanoftp.c trio.c triostr.c triostr.h: applied + patch from Andreas Stricke to ease the compilation on Windows CE + +Tue Apr 17 14:34:45 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmllint.c catalog.c: "xmllint unusable on win32" so applied + a libxml2 patch from Christian Ehrlicher + +Mon Apr 16 09:05:01 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: change the way script/style are parsed to + not try to detect comments, reported by Mike Day + * result/HTML/doc3.*: affects the result of that test + +Wed Apr 11 22:38:18 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: small enhancement for quantifier range with + min occurs of 0; fixes bug 425542. + +Fri Mar 30 14:41:57 CEST 2007 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied change from Michael Day to avoid a problem when + compiled without zlib support. + +Wed Mar 21 17:58:13 CET 2007 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xpath.h: applied documentation patch from James Dennett + +Wed Mar 21 21:20:48 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: fixed problem with 0x2d in Char Range (bug #420596) + * test/regexp/bug420596, result/regexp/bug420596: added regression + test for this + +Wed Mar 21 14:23:08 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c: fixed memory access error on parsing of meta data + which had errors (bug #382206). Also cleaned up a few warnings + by adding some additional DECL macros. + +Tue Mar 20 09:58:13 CET 2007 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: applied patch from Björn Wiberg to try to fix again + the silly __ss_familly problem on various AIXes, should fix #420184 + +Wed Mar 14 20:30:38 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * configure.in: corrected small error in last commit + * xmlreader.c: corrected small typo in last commit + +Wed Mar 14 19:35:28 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: fixed problem with referenced attribute groups + (bug #417621) + * configure.in: re-ordered some includes for types.h / socket.h + (bug #416001) + +Fri Mar 9 17:54:40 CET 2007 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Julien Reichel cleaning up mode + and state internal flags mixups + +Wed Mar 7 16:18:18 HKT 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed xmlXPathCmpNodes for incorrect result on certain + cases when comparing identical nodes (bug #415567) with patch + from Oleg Paraschenko + +Fri Feb 16 09:13:38 PST 2007 William Brack <wbrack@mmm.com.hk> + + * python/libxml.py: fixed tab problem with patch from + Andreas Hanke (bug #408626) + +Thu Feb 15 12:43:28 PST 2007 William Brack <wbrack@mmm.com.hk> + + * doc/xml.html: Changed all references to libxml2 CVS over to + the corresponding SVN. A few other spelling/grammar/links + also changed. + * doc/libxml2-api.xml, doc/*.html: Regenerated all docs. + +Tue Feb 13 18:15:58 PST 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: Fixed memory bug with invalid function reported by + Francois Delyon on mailing list + +Mon Feb 12 16:40:48 PST 2007 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem with invalid char encountered + during text include (reported on xslt mailing list) + +Mon Feb 12 18:30:01 CET 2007 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: small cleanup to avoid packaging .svn + * libxml.h threads.c parser.c: applied patch to avoid a problem + in concurrent threaded initialization fix from Ted Phelps + +Thu Feb 08 15:35:18 PST 2007 William Brack <wbrack@mmm.com.hk> + + * parser.c: added a GROW when parsing complex comments (bug #405666) + * gentest.py, testapi.c: added a hack to prevent destruction of any + param with 'destroy' in it's description (i.e. param destroyed by + the routine under test, so shouldn't be destroyed by testapi) + * xmlreader.c: added freeing of 'input' param even on error + (fixes leak detected by testapi) + +Wed Jan 31 10:25:38 PST 2007 William Brack <wbrack@mmm.com.hk> + + * testAutomata.c, testRegexp.c, testThreads.c, testThreadsWin32.c, + xmlwriter.c: repositioned #include for libxml.h to avoid + compilation error on some architectures (bug #398277) + * fixed screwed-up ChangeLog (deleted some duplicate entries) + +Fri Jan 26 00:05:18 PST 2007 William Brack <wbrack@mmm.com.hk> + + * implemented patch from Stéphane Bidoul for uri.c (bug #389767) + +Thu Jan 25 11:15:08 PST 2007 William Brack <wbrack@mmm.com.hk> + + * xpath.c: added checks for alloc fail on calls to + xmlXPathNewContext (libxslt bug #400242) + +Thu Jan 11 15:38:08 PST 2007 William Brack <wbrack@mmm.com.hk> + + * Re-generated the documentation (API chunks 27-29 were missing) + (also causes changes to testapi.c, elfgcchack.h and + win32/libxml2.def.src) + +Tue Jan 9 22:24:26 CET 2007 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: fix a memory leak in the python string handling + when SAX event are passed back to the python handlers + +Thu Jan 4 18:27:49 CET 2007 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fix xmlTextReaderSetup() description + * test/relaxng/empty1.rng test/relaxng/comps_0.xml + test/relaxng/empty1_0.xml test/relaxng/comps.rng + test/relaxng/empty0.rng test/relaxng/empty0_0.xml + test/relaxng/empty1_1.xml: tests which were apparently + never commited to CVS + +Wed Jan 3 16:05:21 PST 2007 Aleksey Sanin <aleksey@aleksey.com> + + * xmlreader.c include/libxml/xmlreader.h win32/libxml2.def.src: + expose xmlTextReaderSetup() function + +Wed Jan 3 16:14:13 CET 2007 Daniel Veillard <daniel@veillard.com> + + * configure.in: adapt the extra versioning code to SVN + +Thu Dec 14 16:52:34 CET 2006 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.py: apparently id() sometimes + generate negative values and %X outputs -XXXX :-( + +Mon Dec 4 10:30:25 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/tree.h: patch from Michael Day on standalone + and XML declaration detection, and associated documentation change + +Mon Dec 4 10:27:01 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: another XInclude user data propagation patch from + Michael Day + +Thu Nov 23 17:22:03 CET 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied patch from Steven Rainwater to fix + UTF8ToHtml behaviour on code points which are not mappable to + predefined HTML entities, fixes #377544 + +Thu Nov 23 17:11:23 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed a bug where the principal node type of an axis + wasn't tested on name check, fixes bug #377432 + +Wed Nov 8 10:19:27 CET 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: change htmlCtxtReset() following Michael Day bug + report and suggestion. + +Mon Nov 6 09:56:41 CET 2006 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied patch from Igor for path conversion on Windows + +Thu Nov 2 11:29:17 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: another small change on the algorithm for the + elimination of epsilon transitions, should help on #362989 too + +Wed Nov 1 16:33:10 CET 2006 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied documentation patches from Markus Keim + * xmlregexp.c: fixed one bug and added a couple of optimisations + while working on bug #362989 + +Fri Oct 27 14:54:07 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied a reworked version of Usamah Malik patch + to avoid growing the parser stack in some autoclose cases, should + fix #361221 + +Thu Oct 26 10:54:40 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xpath.c: William spotted an obvious bug + +Wed Oct 25 18:04:50 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in testapi.c doc//*: preparing release of + libxml2-2.6.27 + * include/libxml/tree.h: fix a small problem with preproc flags + +Fri Oct 20 14:55:47 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix comment for xmlDocSetRootElement c.f. #351981 + * xmllint.c: order XPath elements when using --shell + +Tue Oct 17 23:23:26 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: applied fix from Christopher Boumenot for bug + #362714 on regexps missing ']' + +Tue Oct 17 22:32:42 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: applied patch from Marius Konitzer to avoid + leaking in xmlNewInputFromFile() in case of HTTP redirection + +Tue Oct 17 22:19:02 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix one problem found in htmlCtxtUseOptions() + and pointed in #340591 + +Tue Oct 17 22:04:31 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed teh 2 stupid bugs affecting htmlReadDoc() and + htmlReadIO() this should fix #340322 + +Tue Oct 17 21:39:23 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xpath.c: applied patch from Olaf Walkowiak which should fix #334104 + +Tue Oct 17 18:12:34 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixing HTML minimized attribute values to be generated + internally if not present, fixes bug #332124 + * result/HTML/doc2.htm.sax result/HTML/doc3.htm.sax + result/HTML/wired.html.sax: this affects the SAX event strem for + a few test cases + +Tue Oct 17 17:56:31 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixing HTML entities in attributes parsing bug #362552 + * result/HTML/entities2.html* test/HTML/entities2.html: added to + the regression suite + +Tue Oct 17 01:21:37 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: started to switch xmllint to use xmlSaveDoc to test + #342556 + * xmlsave.c: fixed #342556 easy and a whole set of problems with + encodings, BOM and xmlSaveDoc() + +Mon Oct 16 15:14:53 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix #348252 if the document clains to be in a + different encoding in the meta tag and it's obviously wrong, + don't screw up the end of the content. + +Mon Oct 16 11:32:09 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix a chunking and script bug #347708 + +Mon Oct 16 09:51:05 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: remove a warning + * encoding.c: check with uppercase for AIX iconv() should fix #352644 + * doc/examples/Makefile.am: partially handle one bug report + +Sun Oct 15 22:31:42 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix the patch for unreproductable #343000 but + also fix a line/column keeping error + * result/errors/attr1.xml.err result/errors/attr2.xml.err + result/errors/name.xml.err result/errors/name2.xml.err + result/schemas/anyAttr-processContents-err1_0_0.err + result/schemas/bug312957_1_0.err: affected lines in error output + of the regression tests + +Sat Oct 14 10:46:46 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixing bug #344390 with xmlReconciliateNs + +Sat Oct 14 00:31:49 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added --html --memory to test htmlReadMemory to + test #321632 + * HTMLparser.c: added various initialization calls which may help + #321632 but not conclusive + * testapi.c tree.c include/libxml/tree.h: fixed compilation with + --with-minimum --with-sax1 and --with-minimum --with-schemas + fixing #326442 + +Fri Oct 13 18:30:55 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fix a Relax-NG bug related to element content processing, + fixes bug #302836 + * test/relaxng/302836.rng test/relaxng/302836_0.xml + result/relaxng/302836*: added to regression tests + +Fri Oct 13 14:42:44 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a problem in xmlSplitQName resulting in bug #334669 + +Fri Oct 13 12:27:22 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed xmlIOParseDTD handling of @input in error case, + Should fix #335085 + * testapi.c: reset the http_proxy env variable to not waste time + on regression tests + +Thu Oct 12 23:07:43 CEST 2006 Rob Richards <rrichards@ctindustries.net> + + * xmlIO.c: fix Windows compile - missing xmlWrapOpen. + +Thu Oct 12 18:21:18 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the heuristic used when trying to detect mixed-content + elememts if the parser wants to treat ignorable whitespaces + in a non-standard way, should fix bug #300263 + +Thu Oct 12 14:52:38 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a first arg error in SAX callback pointed out by + Mike Hommey, and another one still hanging around. Should fix #342737 + +Wed Oct 11 23:11:58 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlversion.h.in: fix comment on versions + * xmlmemory.c: do not spend too much time digging in dumped memory + +Wed Oct 11 18:40:00 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed a weird error where validity context whould not + show up if warnings were disabled pointed out by Bob Stayton + * xmlIO.c doc/generator.py: cleanup and fix to regenerate the docs + * doc//* testapi.c: rebuilt the docs + +Wed Oct 11 14:32:00 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * libxml-2.0.pc.in: applied patch from Mikhail Zabaluev to separate + library flags for shared and static builds, fixes #344594. If this + bites you, use xml2-config. + +Wed Oct 11 11:27:37 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: remove the build path recorded in the python + shared module as Peter Breitenlohner pointed out, should fix #346022 + +Wed Oct 11 11:14:51 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Mikhail Zabaluev fixing the conditions + of unescaping from URL to filepath, should fix #344588. + +Wed Oct 11 10:24:58 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.in xstc/Makefile.am: applied patch from Peter Breitenlohner + for wget detection and fix of a Python path problem, should fix + #340993 + +Tue Oct 10 22:02:29 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * include/libxml/entities.h entities.c SAX2.c parser.c: trying to + fix entities behaviour when using SAX, had to extend entities + content and hack on the entities processing code, but that should + fix the long standing bug #159219 + +Tue Oct 10 14:36:18 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * uri.c include/libxml/uri.h: add a new function xmlPathToUri() + to provide a clean conversion when setting up a base + * SAX2.c tree.c: use said function when setting up doc->URL + or using the xmlSetBase function. Should fix #346261 + +Tue Oct 10 11:05:59 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied a portability patch from Emelyanov Alexey + +Tue Oct 10 10:52:01 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied and slightly modified a patch from Michael Day to + keep _private in the parser context when parsing external entities + +Tue Oct 10 10:33:43 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py python/types.c: applied patch from Ross Reedstrom, + Brian West and Stefan Anca to add XPointer suport to the Python bindings + +Fri Sep 29 11:13:59 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: fixed a comment + * xinclude.c include/libxml/xinclude.h: applied a patch from Michael Day + to add a new function providing the _private field for the generated + parser contexts xmlXIncludeProcessFlagsData() + +Thu Sep 21 10:36:11 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Michael Day doing some refactoring + for the catalog entity loaders. + +Thu Sep 21 08:53:06 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c include/libxml/HTMLparser.h: exports htmlNewParserCtxt() + as Michael Day pointed out this is needed to use htmlCtxtRead*() + +Tue Sep 19 14:42:59 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Ben Darnell on #321545, I could not + reproduce the problem but 1/ this is safe 2/ it's better to be safe. + +Sat Sep 16 16:02:23 CEST 2006 Rob Richards <rrichards@ctindustries.net> + + * tree.c: xmlTextConcat works with comments and PI nodes (bug #355962). + * parser.c: fix resulting tree corruption when using XML namespace + with existing doc in xmlParseBalancedChunkMemoryRecover. + +Fri Sep 1 11:52:55 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: another patch from Emelyanov Alexey to clean up a few things + in the previous patch. + +Wed Aug 30 15:10:09 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Roland Schwingel to fix the problem + with file names in UTF-8 on Windows, and compat on older win9x + versions. + +Tue Aug 22 16:51:22 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed a bug #203125 in Red hat bugzilla, crashing PHP4 + on validation errors, the heuristic to guess is a vctxt user + pointer is the parsing context was insufficient. + +Mon Aug 21 10:40:10 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml: + applied patch to man pages from Daniel Leidert and regenerated + +Thu Aug 17 00:48:31 CEST 2006 Rob Richards <rrichards@ctindustries.net> + + * xmlwriter.c: Add a document to the xmlwriter structure and + pass document when writing attribute content for encoding support. + +Wed Aug 16 01:15:12 CEST 2006 Rob Richards <rrichards@ctindustries.net> + + * HTMLtree.c xmlsave.c: Add linefeeds to error messages allowing + for consistant handling. + +Tue Aug 15 15:02:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Applied the proposed fix for the documentation + of xmlXPathCastToString(); see bug #346202. + +Tue Aug 15 14:49:18 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: While investigating bug #350247, I noticed + that xmlSchemaIDCMatcher structs are massively recreated + although only a maximum of 3 structs is used at the same + time; added a cache for those structures to the + validation context. + +Sat Aug 12 16:12:53 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Marton Illes to fix an allocation + bug in xmlSchemaXPathEvaluate should close #351032 + +Mon Aug 7 13:08:46 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Bertrand Fritsch to fix a bug in + xmlSchemaClearValidCtxt + +Fri Aug 4 14:50:41 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: fixed the conversion of long parameters + +Thu Jul 13 15:03:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlsave.c: Removed the automatic generation of CDATA sections + for the content of the "script" and "style" elements when + serializing XHTML. The issue was reported by Vincent Lefevre, + bug #345147. + * result/xhtml1 result/noent/xhtml1: Adjusted regression test + results due to the serialization change described above. + +Thu Jul 13 08:32:21 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.in parser.c xmllint.c include/libxml/parser.h + include/libxml/xmlversion.h.in: applied patch from Andrew W. Nosenko + to expose if zlib support was compiled in, in the header, in the + feature API and in the xmllint --version output. + +Thu Jul 13 08:24:14 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: refactor to use normal warnings for entities problem + and not straight SAX callbacks. + +Wed Jul 12 17:13:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed bug #347316, reported by David Belius: + The simple type, which was the content type definition + of a complex type, which in turn was the base type of a + extending complex type, was missed to be set on this + extending complex type in the derivation machinery. + +Mon Jul 3 13:36:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Changed xmlXPathCollectAndTest() to use + xmlXPathNodeSetAddNs() when adding a ns-node in case of + NODE_TEST_TYPE (the ns-node was previously added plainly + to the list). Since for NODE_TEST_ALL and NODE_TEST_NAME + this specialized ns-addition function was already used, + I assume it was missed to be used with NODE_TEST_TYPE. + +Mon Jul 3 10:57:33 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied const'ification of strings patch from + Matthias Clasen + +Thu Jun 29 13:51:12 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * threads.c: patch from Andrew W. Nosenko, xmlFreeRMutex forgot to + destroy the condition associated to the mutex. + +Thu Jun 29 12:48:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Fixed a double-free in xmlXPathCompOpEvalToBoolean(), + revealed by a Libxslt regression test. + +Thu Jun 29 12:28:07 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Enhanced xmlXPathCompOpEvalToBoolean() to be also + usable outside predicate evaluation; the intention is to + use it via xmlXPathCompiledEvalToBoolean() for XSLT tests, + like in <xsl:if test="/foo">. + +Wed Jun 28 19:11:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Fix a memory leak which occurred when using + xmlXPathCompiledEvalToBoolean(). + +Mon Jun 26 17:24:28 UTC 2006 William Brack <wbrack@mmm.com.hk> + + * python/libxml.c, python/libxml.py, python/tests/compareNodes.py, + python/tests/Makefile.am: + Added code submitted by Andreas Pakulat to provide node + equality, inequality and hash functions, plus a single + test program to check the functions (bugs 345779 + 345961). + +Mon Jun 26 18:38:51 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Added xmlXPathCompiledEvalToBoolean() to the API and + adjusted/added xmlXPathRunEval(), xmlXPathRunStreamEval(), + xmlXPathCompOpEvalToBoolean(), xmlXPathNodeCollectAndTest() + to be aware of a boolean result request. The new function + is now used to evaluate predicates. + +Mon Jun 26 16:22:50 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Fixed an bug in xmlXPathCompExprAdd(): the newly + introduced field @rewriteType on xmlXPathStepOp was not + initialized to zero here; this could lead to the activation + of the axis rewrite code in xmlXPathNodeCollectAndTest() when + @rewriteType is randomly set to the value 1. A test + (hardcoding the intial value to 1) revealed that the + resulting incorrect behaviour is similar to the behaviour + as described by Arnold Hendriks on the mailing list; so I + hope that will fix the issue. + +Fri Jun 23 18:26:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Fixed an error in xmlXPathEvalExpr(), which + was introduced with the addition of the d-o-s rewrite + and made xpath.c unable to compile if XPATH_STREAMING + was not defined (reported by Kupriyanov Anatolij - + #345752). Fixed the check for d-o-s rewrite + to work on the correct XPath string, which is ctxt->base + and not comp->expr in this case. + +Mon Jun 19 12:23:41 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Added optimization for positional predicates + (only short-hand form "[n]"), which have a preceding + predicate: "/foo[descendant::bar][3]". + +Sun Jun 18 20:59:02 EDT 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: try to fix the crash raised by the parser in + recover mode as pointed by Ryan Phillips + +Sun Jun 18 18:44:56 EDT 2006 Daniel Veillard <daniel@veillard.com> + + * python/types.c: patch from Nic Ferrier to provide a better type + mapping from XPath to python + +Sun Jun 18 18:35:50 EDT 2006 Daniel Veillard <daniel@veillard.com> + + * runtest.c: applied patch from Boz for VMS and reporting + Schemas errors. + +Sun Jun 18 18:22:25 EDT 2006 Daniel Veillard <daniel@veillard.com> + + * testapi.c: applied patch from Felipe Contreras when compiling + with --with-minimum + +Fri Jun 16 21:37:44 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c include/libxml/tree.h: Fixed a bug in + xmlDOMWrapAdoptNode(); the tree traversal stopped if the + very first given node had an attribute node :-( This was due + to a missed check in the traversal mechanism. + Expanded the xmlDOMWrapCtxt: it now holds the namespace map + used in xmlDOMWrapAdoptNode() and xmlDOMWrapCloneNode() for + reusal; so the map-items don't need to be created for every + cloning/adoption. Added a callback function to it for + retrieval of xmlNsPtr to be set on node->ns; this is needed + for my custom handling of ns-references in my DOM wrapper. + Substituted code which created the XML namespace decl on + the doc for a call to xmlTreeEnsureXMLDecl(). Removed + those nastly "warnigns" from the docs of the clone/adopt + functions; they work fine on my side. + +Mon Jun 12 13:23:11 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/pattern/namespaces: Adjusted the result of a + regression test, since the fix of xmlGetNodePath() revealed a + bug in this test result. + +Mon Jun 12 13:06:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Got rid of a compiler warning in xmlGetNodePath(). + +Mon Jun 12 12:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Fixed xmlGetNodePath() to generate the node test "*" + for elements in the default namespace, rather than generating + an unprefixed named node test and loosing the namespace + information. + +Fri Jun 9 21:45:02 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * include/libxml/parser.h: Clarified in the docs that the tree + must not be tried to be modified if using the parser flag + XML_PARSE_COMPACT as suggested by Stefan Behnel + (#344390). + +Tue Jun 6 17:50:43 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.26 + +Tue Jun 6 17:25:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Fixed self-invented a segfault in xmlXPathCtxtCompile(), + when the expression was not valid and @comp was NULL and I + tried to do the d-o-s rewrite. + +Tue Jun 6 15:19:57 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.ini NEWS doc//* libxml.spec.in : preparing release of 2.6.25 + +Tue Jun 6 11:28:15 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Enabled the compound traversal again; I added a + check to use this only if the have an expression starting + with the document node; so in the case of "//foo", we + already know at compilation-time, that there will be only + 1 initial context node. Added the rewrite also to + xmlXPathEvalExpr(). + +Tue Jun 6 10:23:10 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fix bug #343968, include='text' can't lead to a + recursion. + +Fri Jun 2 22:47:08 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Disabled the compound traversal for the release; + I need first to assure that this is done only if we have + 1 initial node. + +Wed May 31 13:53:41 PST 2006 Aleksey Sanin <aleksey@aleksey.com> + + * xpath.c: fixed memory leak in xpath error reporting + +Wed May 31 15:30:16 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * libxml.h triodef.h: applied patch from Olli Savia for LynxOS + +Wed May 31 14:33:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c include/libxml/xpath.h runsuite.c: + Changed the name of the recently added public function + xmlXPathContextSetObjectCache() to + xmlXPathContextSetCache(); so a more generic one, in + case we decide to cache more things than only XPath + objects. + +Tue May 30 21:36:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Optimized xmlXPathNodeCollectAndTest() and + xmlXPathNodeCollectAndTestNth() to evaluate a compound + traversal of 2 axes when we have a "//foo" expression. + This is done with a rewrite of the XPath AST in + xmlXPathRewriteDOSExpression(); I added an additional field + to xmlXPathStepOp for this (but the field's name should be + changed). The mechanism: the embracing descendant-or-self + axis traversal (also optimized to return only nodes which + can hold elements), will produce context nodes for the + inner traversal of the child axis. This way we avoid a full + node-collecting traversal of the descendant-or-self axis. + Some tests indicate that this can reduce execution time of + "//foo" to 50%. Together with the XPath object cache this + all significantly speeds up libxslt. + +Tue May 30 11:38:47 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: A warning will now be reported in the value of + the XSD attribute 'schemaLocation' does not consist of tuples + (namespace-name, document-URI). A warning will be reported + if a schema document could not be found at the specified + location (via 'schemaLocation' or + 'noNamespaceSchemaLocation'). + * include/libxml/xmlerror.h: Added XML_SCHEMAV_MISC to + xmlParserErrors. + +Tue May 30 11:21:34 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Enhanced xmlXPathNodeCollectAndTest() to avoid + recreation (if possible) of the node-set which is used to + collect the nodes in the current axis for the currect context + node. Especially for "//foo" this will decrease dramatically + the number of created node-sets, since for each node in the + result node-set of the evaluation of descendant-or-self::node() + a new temporary node-set was created. Added node iterator + xmlXPathNextChildElement() as a tiny optimization for + child::foo. + +Mon May 29 18:06:17 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c include/libxml/xpath.h: Added an XPath object cache. + It sits on an xmlXPathContext and need to be explicitely + activated (or deactivated again) with + xmlXPathContextSetObjectCache(). The cache consists of 5 + lists for node-set, string, number, boolean and misc XPath + objects. Internally the xpath.c module will use object- + deposition and -acquisition functions which will try to reuse + as many XPath objects as possible, and fallback to normal + free/create behaviour if no cache is available or if the cache + is full. + * runsuite.c: Adjusted to deactivate the cache for XML Schema + tests if a cache-creation is turned on by default for the whole + library, e.g. for testing purposes of the cache. It is + deactivated here in order to avoid confusion of the memory leak + detection in runsuite.c. + +Wed May 24 10:54:25 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Removed a memcpy if xmlXPathNodeSetMerge(); it + seems we really need to walk the whole list, since those + nastly namespace nodes need to be added with + xmlXPathNodeSetDupNs(); thus a pure memcpy is not possible. + A flag on the node-set indicating if namespace nodes are in + the set would help here; this is the 3rd flag which would + be usefull with node-sets. The current flags I have in mind: + 1) Is a node-set already sorted? + This would allow for rebust and optimizable sorting + behaviour. + 2) Of what type are the nodes in the set (or of mixed type)? + This would allow for faster merging of node-sets. + 3) Are namespace nodes in the set? + This would allow to skipp all the namespace node specific + special handling. Faster node-set merging if the first + set is empty; just memcpy the set. + +Mon May 22 17:14:00 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Optimization of count(): eliminated sorting + (see bug #165547). Optimization of XPATH_OP_FILTER if the + predicate is a [1] (disable with XP_OPTIMIZED_FILTER_FIRST if + it produces trouble). Tiny opt in xmlXPathNodeSetMerge(). + +Mon May 22 13:33:12 CEST 2006 Rob Richards <rrichards@ctindustries.net> + + * tree.c: Revert behavior change in xmlSetProp to handle attributes + with colons in name and no namespace. + +Fri May 19 21:56:43 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Substituted all remaining calls to xmlXPathCmpNodes() + for xmlXPathCmpNodesExt(). Tiny further enhancement of + xmlXPathCmpNodesExt(). Added additional checks in various code + parts to avoid calling sorting or merging functions if the + node-set(s) don't need them; i.e., if they are empty or contain + just one node. + +Fri May 19 13:16:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Optimized the comparison for non-element nodes + in xmlXPathCmpNodesExt(); the comparison is used for sorting + of node-sets. This enhancement is related to bug #165547. + There are other places where the old comparison function + xmlXPathCmpNodes() is still called, but I currently don't + know exactly what those calls are for; thus if they can be + substituted (if it makes sense) for the new function. + +Tue May 16 16:55:13 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xpath.c: Applied patch from Rob Richards, fixing a potential + memory leak in xmlXPathTryStreamCompile(), when a list of + namespaces was assigned to the XPath compilation context; + here a new namespace list was created and passed to + xmlPatterncompile(); but this list was not freed afterwards. + Additionally we avoid now in xmlXPathTryStreamCompile() to + compile the expression, if it has a colon - indicating + prefixed name tests - and no namespace list was given. The + streaming XPath mechanism needs a namespace list at + compilation time (unlike normal XPath, where we can bind + namespace names to prefixes at execution time). + * pattern.c: Enhanced to use a string dict for local-names, + ns-prefixes and and namespace-names. + Fixed xmlStreamPushInternal() not to use string-pointer + comparison if a dict is available; this won't work, since + one does not know it the given strings originate from the + same dict - and they normally don't do, since e.g. + namespaces are hold on xmlNs->href. I think this would be + worth an investigation: if we can add a @doc field to xmlNs + and put the @href in to a additionan namespace dict hold + in xmlDoc. Daniel will surely not like this idea :-) But + evaluation of tons of elements/attributes in namespaces + with xmlStrEqual() isn't the way we should go forever. + +Thu May 11 18:03:49 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed bug #341337, reported by David Grohmann. + The code expected a node (xmlNodePtr) on the info for a + non-existent default attribute, which clearly cannot be + expected, since the attribute does not exist. I can only + guess that this sneaked trying to eliminate the query + for the owner-element, which is unavoidable actually. + Note that creation of default attributes won't have an + effect if validating via SAX/XMLReader; i.e., the processor + won't fire additional start-attribute events (I'm not even + sure if Libxml2 has such a SAX-event; I think it hands them + all over in the start-element event). + +Tue May 9 21:47:58 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed bug #341150, reported by Michael Romer. + In xmlSchemaBuildContentModelForSubstGroup(), + xmlAutomataNewOnceTrans2() was incorrectly used instead of + xmlAutomataNewTransition2() to mimic a xs:choice for + substitution-groups. + * test/schemas/subst-group-1_1.xsd + test/schemas/subst-group-1_0.xml + result/schemas/subst-group-1_0_1 + result/schemas/subst-group-1_0_1.err: Added regression test + supplied by Michael Romer for bug #341150. + +Sat May 6 11:05:24 HKT 2006 William M. Brack <wbrack@mmm.com.hk> + + * relaxng.c: Fixed compilation error with patch supplied by + Graham Bennett. + +Thu May 4 19:14:03 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: We'll raise an internal error and stop + validation now when an entity is found in the instance + document, since we don't support automatic entity + substitution by the schema processor (yet?) - + see bug #340316, reported by Nick Wellnhofer. + +Wed May 3 15:16:00 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied another Python detection patch from Joseph Sacco + * libxml.spec.in: cleanup the changelog section, asciifies the spec file + too + +Tue May 2 22:34:54 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fix a mix of code and declarations showing up on Windows + patch from Kjartan Maraas, fixing #340404 + +Tue May 2 14:24:40 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fixing bug #340398 xmlCharEncOutFunc writing to + input buffer + +Fri Apr 28 18:29:22 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in doc//*: preparing 2.6.24 release, fixed Python + paths at the last moment + * relaxng.c testapi.c tree.c: fix some comments + +Thu Apr 27 10:15:45 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Roland Schwingel to allow UTF-8 + file paths on Windows + +Thu Apr 27 10:10:58 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: patch from Jason Viers for line breaks after EndPI + +Tue Apr 25 22:22:58 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix compilation without tree + +Tue Apr 25 18:17:37 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: applied patch from Gary Coady to really make sure + xmllint --nonet would not reach the network, should fix #337483. + +Tue Apr 25 14:52:15 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied patch from Joseph Sacco changing slightly + the python detection scheme should fix bug #338526 + +Mon Apr 24 10:50:19 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix the error message for invalid code point in content + c.f. bug #339311 + +Wed Apr 19 13:16:23 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c test/schemas/restriction-enum-1* + result/schemas/restriction-enum-1*: Fixed incorrect + validation of restricted enumerations. Added related + regression tests. + +Thu Apr 13 09:47:25 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixing a deallocation problem in xmlSchemaAddSchemaDoc() + in case of errors, should fix bug #338303 + +Thu Apr 13 09:31:45 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixing a deallocation problem in xmlRelaxNGParse() + in case of errors, should fix bug #338306 + +Thu Apr 6 10:22:17 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml: + applied man page improvements from Daniel Leidert + +Mon Mar 27 11:44:07 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: removed unused code or variables, from Stefan Kost + fixing #336163 and #336164 + +Mon Mar 27 11:38:21 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Stefan Kost fixing #336160 + +Mon Mar 27 11:23:39 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * chvalid.c genChRanges.py genUnicode.py xmlunicode.c + include/libxml/chvalid.h include/libxml/xmlunicode.h: applied + patches from Aivars Kalvans to make unicode tables const, fixes + bug #336096, this also updates to Unicode 4.01 final with a couple + of character ranges fixes. + +Mon Mar 27 00:51:40 CEST 2006 Daniel Veillard <daniel@veillard.com> + + * chvalid.c genChRanges.py include/libxml/chvalid.h: fixed bug + #335603 and resync'ed genChRanges.py to the expected output. + +Wed Mar 22 00:14:34 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: applied patch from Youri Golovanov fixing bug + #316338 and adding a couple of optimizations in the regexp + compilation engine. + * test/regexp/bug316338 result/regexp/bug316338: added regression + tests based on the examples provided in the bug report. + +Fri Mar 10 08:40:55 EST 2006 Daniel Veillard <daniel@veillard.com> + + * c14n.c encoding.c xmlschemas.c xpath.c xpointer.c: fix a few + warning raised by gcc-4.1 and latests changes + +Fri Mar 10 01:34:42 CET 2006 Daniel Veillard <daniel@veillard.com> + + * runtest.c schematron.c testAutomata.c tree.c valid.c xinclude.c + xmlcatalog.c xmlreader.c xmlregexp.c xpath.c: end of first + pass on coverity reports. + +Thu Mar 9 19:36:14 CET 2006 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlschemas.c xmlschemastypes.c: more cleanups based + on coverity reports. + +Thu Mar 9 17:47:40 CET 2006 Daniel Veillard <daniel@veillard.com> + + * SAX2.c catalog.c encoding.c entities.c example/gjobread.c + python/libxml.c: more cleanups based on coverity reports. + +Thu Mar 9 15:12:19 CET 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c parserInternals.c pattern.c uri.c: a bunch + of small cleanups based on coverity reports. + +Thu Mar 9 09:42:10 CET 2006 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.bcb: added schematron as pointed out by Eric Zurcher + +Tue Mar 7 09:50:09 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xml2-config.in: fix Red Hat bug #184170 + +Mon Mar 6 14:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Simplified usage of the internal xmlNsMap. Added a + "strict" lookup for namespaces based on a prefix. Fixed a + namespace processing issue in the clone-node function, which + occured if a @ctxt argument was given. + +Fri Mar 3 17:44:10 CET 2006 Rob Richards <rrichards@ctindustries.net> + + * valid.c: fix HTML attribute ID checking for input element. + Maintain current attribute "name" behavior for now. + +Thu Mar 2 18:59:50 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Bundled lookup of attr-nodes and retrieving their + values into the functions xmlGetPropNodeInternal() and + xmlGetPropNodeValueInternal(). Changed relevant code + to use those functions. + +Mon Feb 27 20:42:04 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xpath.c: workaround HP-UX compiler bug by Rick Jones + +Mon Feb 27 10:57:05 CET 2006 Daniel Veillard <daniel@veillard.com> + + * python/libxml2.py: remove a tab, as pointed out on IRC + +Sat Feb 25 18:12:10 CET 2006 Rob Richards <rrichards@ctindustries.net> + + * tree.c: Fix the add sibling functions when passing attributes. + Modify testing for ID in xmlSetProp. + No longer remove IDness when unlinking or replacing an attribute. + +Fri Feb 24 21:20:33 CET 2006 Daniel Veillard <daniel@veillard.com> + + * catalog.c: Martin Cole pointed out a bug in xmlCatalogAdd() + if /etc/xml/catalog doesn't exist. + +Thu Feb 23 23:06:18 CET 2006 Daniel Veillard <daniel@veillard.com> + + * doc//*: updated the Ruby bindings links, and regenerated the + docs. + +Thu Feb 23 09:12:27 CET 2006 Daniel Veillard <daniel@veillard.com> + + * catalog.c: improve catalog debugging message patch from Rick Jones + +Wed Feb 22 16:09:10 CET 2006 Daniel Veillard <daniel@veillard.com> + + * python/types.c: Nic Ferrier found debug statement left in the + XPath conversion code + +Tue Feb 21 20:23:14 CET 2006 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.xml: small man page improvements from + Daniel Leidert + +Mon Feb 20 15:45:19 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a side-effect of the previous XSI bugfix: + The constructor needs a bucket to be assigned during component + fixup. + +Mon Feb 20 14:32:36 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlschemastypes.c: Fixed xs:boolean to reject + the empty string (reported by Bas Driessen on the mailing-list). + Fixed schema XSI-acquisition and construction: the schemata + (xmlSchema) didn't get the targetNamespace in some cases, thus + the component resolution mechanism failed to work. The XSI + stuff needs to be tested more intensively; think about how + to test this for regression. + +Mon Feb 20 09:57:41 CET 2006 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.xml: more man page improvements from + Daniel Leidert + +Sun Feb 19 22:31:33 CET 2006 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.xml: man page improvements from Daniel + Leidert, c.f. #331290 + +Sun Feb 19 17:54:04 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: fix an error report when using --path and --valid + closes bug #331290 + +Sun Feb 19 16:20:43 CET 2006 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: trying to fix #331062, this is again a problem + around interleave, there is no good fix unless reimplementing + but this works around some cases and allow to validate in that + case. + +Wed Feb 15 11:55:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Fixed bug #328896 reported by Liron. The path + for text- and CDATA-section-nodes was computed incorrectly + in xmlGetNodePath(). + +Sun Feb 12 20:12:22 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: bug fixes for #327167 as well as some cleanups + and more thorough tests on atoms comparisons. + +Thu Feb 9 10:07:20 CET 2006 Daniel Veillard <daniel@veillard.com> + + * include/wsockcompat.h: patch from Eric Zurcher to compile with + Borland C++ 6 + +Sun Feb 5 04:03:59 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: bill pointed out a missing block in xmlParseComment + trying to fill with a normal processing of the given character. + +Sun Feb 5 03:41:39 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the comment streaming bug raised by Graham Bennett + * test/badcomment.xml result//badcomment.xml*: added to the regression + suite. + +Fri Feb 3 17:36:41 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * include/libxml/tree.h: Added the xmlDOMWrapCloneNode() to + the header file. + +Fri Feb 3 17:29:22 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Added an initial version of xmlDOMWrapCloneNode() to + the API. It will be used to reflect DOM's Node.cloneNode and + Document.importNode methods. + The pros: 1) non-recursive, 2) optimized ns-lookup + (mostly pointer comparison), 3) user defined ns-lookup, + 4) save ns-processing. The function is in an unfinished + and experimental state and should be only used to test it. + +Fri Feb 3 10:42:48 CET 2006 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied patch from Rob Richards fixing the URI regressions + tests on Windows which seems to indicate bad escaping. + +Thu Feb 2 13:11:26 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Fixed some bugs xmlDOMWrapReconcileNamespaces() wrt + the previous addition of the removal of redundant ns-decls. + +Wed Feb 1 17:32:25 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Enhanced xmlDOMWrapReconcileNamespaces() to remove + redundant ns-decls if the option XML_DOM_RECONNS_REMOVEREDUND + was given. Note that I haven't moved this option to the + header file yet; so just call this function with an @option + of 1 to test the behaviour. + +Wed Feb 1 12:21:08 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tapi.c win32/Makefile.*: Added changed as proposed on + the mailing list by venkat naidu in order to compile + testapi.c on windows. + +Thu Jan 19 09:57:28 CET 2006 Daniel Veillard <daniel@veillard.com> + + * configure.in xml2-config.in: trying to fix windows/configure + issues reported by Tim Van Holder + +Wed Jan 18 18:21:15 CET 2006 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c libxml.h parser.c: try to fix xmlParseInNodeContext + when operating on an HTML document. + +Mon Jan 9 17:27:15 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * relaxng.c include/libxml/relaxng.h: Added + xmlRelaxNGSetParserStructuredErrors() to the API. + +Mon Jan 9 15:33:16 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: reverted first patches for #319279 which led to #326295 + and fixed the problem in xmlParseChunk() instead + * test/ent11 result//ent11*: added test for #326295 to the regression + suite + +Thu Jan 5 16:25:06 CET 2006 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in libxml.spec.in testapi.c doc/*: upated the news + regenerated the docs, preparing for release of 2.6.23 + * pattern.c xmlschemas.c: fixed some comments + +Thu Jan 5 15:48:27 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/XPath/docs/nodes test/XPath/tests/nodespat + result/XPath/tests/nodespat: Added regression tests for + the latest XPath/pattern fixes. + +Thu Jan 5 15:43:38 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Another fix to handle "foo//.": "foo" was not + included in the resulting node-set. + +Thu Jan 5 13:22:29 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c xpath.c include/libxml/pattern.h: + Fixed bug #322928, reported by Erich Schubert: The bug was + in pattern.c, which is used for a tiny subset of xpath + expression which can be evaluated in an optimized way. + The doc-node was never considered when evaluating "//" + expressions. Additionally, we fixed resolution + to nodes of any type in pattern.c; i.e. a "//." didn't work + yet, as it did select only element-nodes. Due to this + issue the pushing of nodes in xpath.c needed to be adjusted + as well. + +Wed Jan 4 18:07:47 CET 2006 Daniel Veillard <daniel@veillard.com> + + * parser.c: tiny refactoring patch from Bjorn Reese + +Wed Jan 4 15:00:51 CET 2006 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fix bug #324432 with <xml:foo/> + * test/ns7 resul//ns7*: added to the regression tests + +Wed Jan 4 10:53:56 CET 2006 Daniel Veillard <daniel@veillard.com> + + * include/wsockcompat.h: applied patch from Mark Junker, fixing a + MinGW compilation problem, should close bug #324943 + +Tue Jan 3 11:49:54 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed last dependency on the obsolete enum + xmlSchemaValidError. + +Mon Jan 2 11:20:00 CET 2006 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h xmlschemas.c: compilation + and doc build fixes from Michael Day + +Wed Dec 28 22:12:34 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: bug in xmlRegExecPushString2() pointed out by + Sreeni Nair. + +Tue Dec 20 16:55:31 CET 2005 Rob Richards <rrichards@ctindustries.net> + + * tree.c: fix bug #322136 in xmlNodeBufGetContent when entity ref is + a child of an element (fix by Oleksandr Kononenko). + * HTMLtree.c include/libxml/HTMLtree.h: Add htmlDocDumpMemoryFormat. + +Tue Dec 20 11:43:06 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlstring.c: Fixed a segfault during + text concatenation when validating a node tree: + xmlStrncat was called with a @len of -1; but unlike + xmlStrncatNew, it does not calculate the length + automatically in such a case (reported by Judy Hay + on the mailing list). + Updated the descriptions of the involved string + functions to note this. + +Thu Dec 15 12:11:07 CET 2005 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: applied patch from Gary Coady to accept gzipped + http resources. + +Wed Dec 14 18:41:26 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * win32/configure.js: Added enable/disable of runtime + debugging (LIBXML_DEBUG_RUNTIME). + +Wed Dec 14 18:11:50 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * include/libxml/xmlversion.h.in: Fixed to define + LIBXML_DEBUG_RUNTIME on the basis of @WITH_RUN_DEBUG@. + +Tue Dec 13 12:49:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/bug321475* result/schemas/bug321475*: + Added regression test for bug #321475 (reported by + Gabor Nagy). Fixing of bug #323510 seemed to have + fixed this bug as well. + +Mon Dec 12 16:19:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/bug323510* result/schemas/bug323510*: + Added regression test for bug #323510. + +Mon Dec 12 16:11:13 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Workaround for bug #323510 (reported by + Jonathan Filiatrault): substituted the epsilon transition + for a labelled transition, in order to avoid a bug in + xmlregexp.c which eliminated the epsilon transition and + marked the initial state as final. + +Mon Dec 12 14:25:46 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: Gary Coady pointed a memory leak in + xmlTextReaderReadInnerXml() applied patch fixing #323864 + +Sat Dec 10 12:08:28 CET 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c configure.in parserInternals.c runsuite.c runtest.c + testapi.c xmlschemas.c xmlschemastypes.c xmlstring.c: fixed a number + of warnings shown by HP-UX compiler and reported by Rick Jones + +Fri Dec 9 18:57:31 CET 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlwriter.c: Insert space between pubid and sysid when both + passed to xmlTextWriterStartDTD and indenting not being used. + Remove no longer used Mem callbacks. + +Fri Dec 9 11:01:16 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * runsuite.c: Changed to instantly mark instance-tests as + failed if the corresponding schema was invalid. This + reflects the side of the Python code for the XML Schema test + suite. We now get the same number of failed tests on both + sides. + +Wed Dec 7 14:59:01 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlreader.c include/libxml/xmlreader.h: Added + xmlTextReaderSchemaValidateCtxt() to the API. + +Wed Dec 7 12:59:56 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a segfault: the instance document was + still tried to be validated, if the schema, dynamically + acquired using XSI was invalid, thus mangled. The + validation will stop (or rather won't validate) now in + such a case. The schema parser error code will be set + on the validion context now; this is somehow not nice, + but it assures that the validation context indicates an + error in there was a parser error. + +Tue Dec 6 18:57:23 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: small doc patch from Aron Stansvik + * legacy.c: another doc patch for a deprecated API + +Mon Dec 5 16:23:49 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * Makefile.am: Tiny change for 'make tests': raised + the number of expected failures for James Clark's + XML Schema datatype tests from 10 to 11. The additional + reported error was agreed to be correct long time ago, + but we missed to adjust the message reported by + the testing script. + +Fri Dec 2 13:51:14 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/decimal* result/schemas/bug322411*: + Added missing regression test results for the latest IDC + and xs:decimal bugs. + +Wed Nov 30 12:22:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/decimal* test/schemas/bug322411*: Added + regression tests for the latest IDC and xs:decimal bugs. + +Wed Nov 30 11:57:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed bubbling of duplicate IDC nodes: the + parent's list of duplicates was filled with NULLs instead + of the nodes under certain conditions. This lead to a + segfault when the list's entries were accessed. + +Mon Nov 28 17:28:53 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Fixed parsing of xs:decimal to + allow/deny special lexical forms. Fixed the totalDigits + for values in the range (x < 1) && (x > -1) && (x != 0); + E.g "0.123" has now a totalDigits of 3 (was 4 previously). + Adjusted the comparison function for decimals due to this + change. As a side effect comparison against zeroes was + optimized. + +Mon Nov 28 13:25:11 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: An assignment to a local variable, which was + used to access the IDC node list, was missing after the + reallocation of the list (reported by Fabrice GUY + bug #322411). Renamed the define ENABLE_IDC_NODE_TABLES + to ENABLE_IDC_NODE_TABLES_TEST and *disabled* it, since + it is used to force bubbling of IDC node tables even + if not necessary; this was intended to be used for test + purposes, but I obviously missed to disable it (although + it apparently helped finding the bug). + +Wed Nov 23 17:34:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: In xmlSchemaAssembleByXSI() the return value + of xmlSchemaGetMetaAttrInfo() was not assigned to anything; + this caused XSI-driven-dynamic schema acquisition to fail + with @noNamespaceSchemaLocation (reported by Julien Lamy + on the mailing list). + +Tue Nov 22 18:31:34 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a bug in xmlSchemaFindRedefCompInGraph() + which caused the search for components to stop at the + first encountered attribute group component. + Fixed error report in xmlSchemaCheckSRCRedefineFirst(): the + designation of a not-found component was not reported. + +Mon Nov 21 12:23:28 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: Albert Chin found another signed/unsigned problem + in the date and time code raised on IRIX 6.5 + +Fri Nov 18 18:13:38 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlschemas.h: + Added xmlSchemaSetParserStructuredErrors() to the API. + Fixed channeling of error relevant information to + subsequent parser/validation contexts. + +Thu Nov 17 14:11:43 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: removed unreachable code pointed out by + Oleksandr Kononenko, fixes bug #321695 + +Thu Nov 17 08:24:31 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: use ctxt->standalone = -2 to indicate that the + XMLDecl was parsed but no standalone attribute was found, + suggested by Michael Day to detect if an XMLDecl was found. + +Tue Nov 15 09:49:24 CET 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: Hisashi Fujinaka pointed that errors in Schemas tests + were not properly reported. + +Sun Nov 13 13:42:41 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Geert Jansen to remove xmlBufferClose() + which is not needed. + +Fri Nov 11 13:48:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Changed xmlSchemaFormatIDCKeySequence() + to use xmlSchemaGetCanonValueWhtspExt() in order to + correctly report values for xs:anySimpleType. + * test/schemas/idc-keyref-err1* + result/schemas/idc-keyref-err1*: Added a test for this change. + +Wed Nov 9 13:07:24 EST 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlIO.c xmlwriter.c: function consolidation when writing to xmlBuffer. + Return error condition not len if xmlwriter fails writing to buffer. + +Wed Nov 9 09:54:54 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c xmlIO.c include/libxml/xmlIO.h include/libxml/xmlsave.h: + applied patch from Geert Jansen to implement the save function to + a xmlBuffer, and a bit of cleanup. + +Mon Nov 7 14:58:39 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlschemastypes.c: Fixed the type of the + totalDigits value to be positiveInteger. + Fixed crash in an error report function when we gave it + the document node; only element and attribute nodes are + processed now (reported by Rob Richards). + +Tue Nov 1 16:22:29 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fix bug #319897, problem with counted atoms + when the transition itself is counted too + * result/regexp/hard test/regexp/hard: augmented the regression + tests with the problem exposed. + +Tue Nov 1 11:54:39 CET 2005 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.mingw include/win32config.h: applied patch from + Mark Junker to fix compilation with MinGW + +Fri Oct 28 18:36:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * libxml.3: tiny fix from Albert Chin + * runsuite.c runtest.c testapi.c: portability cleanup for arch + needing trio for *printf + +Fri Oct 28 12:21:39 EDT 2005 Rob Richards <rrichards@ctindustries.net> + + * tree.c: add additional checks to prevent tree corruption. fix problem + copying attribute using xmlDocCopyNode from one document to another. + +Fri Oct 28 17:58:13 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in vms/config.vms macos/src/config-mac.h: + cleanup from Albert Chin + * doc/Makefile.am: html/index.sgml doesn't exist anymore + +Fri Oct 28 16:53:51 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c xmlmodule.c: more portability patches from Albert Chin for + HP-UX and AIX + +Fri Oct 28 10:36:10 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlmodule.c configure.in: applied 2 patches from Albert Chin for + module portability + +Fri Oct 28 10:24:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c: fixing a portability problem on some old Unices with + patch from Albert Chin + +2005-10-27 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c result/c14n/exc-without-comments/test-2 + test/c14n/exc-without-comments/test-2.xml + test/c14n/exc-without-comments/test-2.xpath: fixing + bug in exc-c14n namespace visibility + test case (bug #319367) + +Thu Oct 27 16:10:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: remove warnings to stdout patch from Nic Ferrier + +Thu Oct 27 13:54:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * valid.c xmlregexp.c include/libxml/valid.h + include/libxml/xmlregexp.h: avoid function parameters names 'list' + as this seems to give troubles with VC6 and stl as reported by + Samuel Diaz Garcia. + +Wed Oct 26 10:59:21 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fix a problem in some error case on Solaris + when passed a NULL filename, pointed by Albert Chin. + +Tue Oct 25 14:34:58 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: script HTML parser error fix, corrects bug #319715 + * result/HTML/53867* test/HTML/53867.html: added test from Michael Day + to the regression suite + +Tue Oct 25 14:21:11 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: typo fix from Michael Day + +Mon Oct 24 20:16:23 EDT 2005 Rob Richards <rrichards@ctindustries.net> + + * tree.c: fix issue adding non-namespaced attributes in xmlAddChild(), + xmlAddNextSibling() and xmlAddPrevSibling() (bug #319108) - part 1. + +Sat Oct 22 10:00:41 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed second spot where CRLF split between chunks + could cause trouble (bug #319279) + * gentest.py, testapi.c: fixed two problems involved with + --with-minimum compilation (compilation errors with schematron + and formal expressions tests) + +Fri Oct 21 10:50:14 EDT 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlsave.c: prevent output of fragment tags when serializing XHTML. + +Wed Oct 19 16:53:47 BST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: commiting a some fixes and debug done yesterday in + the London airport. + +Thu Oct 20 12:54:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed creation of a temporary parser context + during validation when processing xsi:type; this previously + added a string to the dict of the schema - to assure thread + safety, we don't want to modify a given schema during + validation. + +Thu Oct 20 17:05:29 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xmlwriter.c: fixed problem in xmlTextWriterVSprintf caused by + misuse of vsnprintf + * configure.in, config.h.in: added a configuration check for + va_copy and added a define for VA_COPY for xmlwriter.c fix + * parser.c: fixed problem with CRLF split between chunks (bug + #319279) (fix provided by Brion Vibber) + +Wed Oct 19 18:49:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a potential memory leak in + xmlSchemaCheckCSelectorXPath() when an internal error occurs. + Fixed setting of ctxt->err to the given error code in + the parsing error functions. + * pattern.c: Added internal xmlCompileIDCXPathPath() as a + starting point for IDC XPath compilation; this and some other + tiny changes fixes issues regarding whitespace in the + expressions and IDC selector/field relevant restrictions of + the subset of XPath. Fixed a missing blocking of attributes + in xmlStreamPushInternal(). + +Mon Oct 17 15:06:05 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: removed the error message + * relaxng.c xmlschemas.c: removed 2 instability warnings from function + documentation + * include/libxml/schemasInternals.h: changed warning about API stability + * xmlregexp.c: trying to improve runtime execution of non-deterministic + regexps and automata. Not fully finished but should be way better. + +Mon Oct 17 16:12:02 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a memory leak in + xmlSchemaContentModelDump(). Added output of local types + in xmlSchemaElementDump(). Tiny cosmetical changes to the + dump output. + +Mon Oct 17 14:29:08 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c pattern.c: Silenced intel compiler warnings (reported + by Kjartan Maraas, bug #318517). + * xmlschemas.c: The above changes in pattern.c revealed an + inconsistency wrt IDCs: we now _only_ pop XPath states, if + we really pushed them beforehand; this was previously not + checked for the case when we discover an element node to be + invalid wrt the content model. + Fixed segfault in xmlSchemaGetEffectiveValueConstraint(). + +Fri Oct 14 16:40:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/*.err: Adapted regression test results. + +Fri Oct 14 16:21:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed some identity-constraint issues: + Restructured IDC node-tables + Allowed IDCs to resolve also to nodes of complex type with + simple content. + Added check for keyrefs with references to keyrefs. + IDC target-nodes were interferring with IDC node-tables, + since they used one list of entries only. I separated this + one big list into 3 lists: 1 for IDC node-table entries, + 1 for _duplicates_ of IDC node-table entries and 1 for + IDC target-nodes. More code, but cleaner and it works at last. + Keyrefs will fail to resolve to duplicate key/unique entries. + I thought this was already working this way, but it didn't. + The wording of the definition for [node table] in the spec + can lead to a scenario, where keyrefs resolve perfectly, even + if the relevant key-sequences of the referenced key/unique have + duplicates in the subtree. Currently only Saxon 8.5.1 is + dissallowing resolution to duplicate entries correctly - we + will follow Saxon here. + Removed some intel compiler warnings (reported by + Kjartan Maraas, bug #318517). + * pattern.c: Fixed an IDC-XPath problem when resolving to + attributes. + +Mon Oct 14 01:15:14 CEST 2005 Rob Richards <rrichards@ctindustries.net> + * nanohttp.c include/wsockcompat.h: applied patch from Kolja Nowak + to use getaddrinfo() if supported in Windows build (bug# 317431). + +Mon Oct 10 15:33:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/*: Adapted regression test results. + +Mon Oct 10 15:12:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: Initial implementation for + redefinitions; this still misses checks for restrictions + of the content model of complex types. + Fixed default/fixed values for attributes (looks like they + did not work in the last releases). + Completed constraints for attribute uses. + Seperated attribute derivation from attribute constraints. + Completed constraints for attribute group definitions. + Disallowing <import>s of schemas in no target namespace if the + importing schema is a chameleon schema. This contradicts + the way Saxon, Xerces-J, XSV and IBM's SQC works, but the + W3C XML Schema WG, thinks it is correct to dissalow such + imports. + Added cos-all-limited constraints. + Restructured reference resolution to model groups and element + declarations. + Misc cleanup. + +Fri Oct 7 04:34:12 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * schematron.c xmlregexp.c: remove warnings under Windows. + +Wed Sep 28 23:42:14 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Massimo Morara fixing bug #317447 + about risk of invalid write in xmlStringLenDecodeEntities + +Tue Sep 27 11:20:57 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c: Adrian Mouat pointed out redundancies in xmlReportError() + +Mon Sep 26 19:18:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: seems a test to avoid duplicate transition is + really needed at all times. Luka Por gave an example hitting + this. Changed back the internal API. + +Thu Sep 22 13:14:07 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixing leak in xmlTextReaderReadString() #316924 + +Thu Sep 15 16:12:44 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * uri.c: more fixes to the behaviour of xmlBuildRelativeURI + +Thu Sep 15 15:08:21 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: detect combinatory explosion and return with + a runtime error in those case, c.f. #316338 though maybe we + should not see such an explosion with that specific regexp, + more checking needs to be done. + +Wed Sep 14 19:52:18 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * include/libxml/schemasInternals.h: Added some comments for the + struct fields. + +Wed Sep 14 13:24:27 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * uri.c: fixed problem when xmlBuildRelativeURI was given a + blank path (bug 316224) + +Mon Sep 12 23:41:40 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in doc//*: release of 2.6.22 updated doc and + rebuild. + * xmlsave.c include/libxml/xmlsave.h: added XML_SAVE_NO_XHTML + xmlSaveOption + * xmlschemas.c: minor cleanups + +Mon Sep 12 21:42:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/import1_0.xsd: And adapting another one. + +Mon Sep 12 21:29:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/derivation-ok-extension_0_0: Adapted result. + +Mon Sep 12 21:20:41 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/allsg_0_3.err result/schemas/allsg_0_4.err + result/schemas/changelog093_1_0.err + result/schemas/derivation-ok-extension_0_0.err + result/schemas/import1_0_0.err + result/schemas/derivation-ok-restriction-2-1-1_0_0.err: + Adapted regression results. + +Mon Sep 12 21:00:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: Completion of the schema graph. + Centralisation, more robustness of the schema document + aquisition story. Centralised and restructured component fixup. + Fixed attribute derivation when 'prohibiting' attribute uses. + Added warnings: when schema documents cannot be localized + during imports; when we get duplicate and pointless attribute + prohibitions. Changed error reports for IDCs to report + the relevant IDC designation as well (requested by GUY Fabrice). + Misc code-cleanup. + +Mon Sep 12 16:02:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: applied second patch from David Madore to be less intrusive + when handling scripts and style elements in XHTML1 should fix #316041 + * test/xhtml1 result//xhtml1\*: updated the test accordingly + +Mon Sep 12 15:09:09 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in doc/devhelp/*: finished the integration with + devhelp, completing the index and inserted into the gtk-doc + database at "make install" stage + +Mon Sep 12 14:14:12 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * include/libxml/xmlsave.h xmlsave.c: add XML_SAVE_NO_EMPTY save option + and use option from xmlSaveCtxtPtr rather than global during output. + * xmlsave.c: fix some output formatting for meta element under XHTML. + +Mon Sep 12 11:12:03 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h parser.c xmllint.c: damn XML_FEATURE_UNICODE + clashes with Expat headers rename to XML_WITH_ to fix bug #316053. + * doc/Makefile.am: build devhelp before the examples. + * doc/*: regenerated the API + +Mon Sep 12 02:03:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: fix bug #316034, where xmlElemDump() can crash if + given a document pointer instead of an element + +Mon Sep 12 01:26:16 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/devhelp/devhelp.xsl: improvements on the html generation, + should be complete with navigation, what is left done is glueing + +Mon Sep 12 00:03:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml + doc/devhelp/*: started work needed to generate devhelp content, + not too hard based on the existing format and extractor. + +Fri Sep 9 12:56:19 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixes bug #315617 when using push CDATA in some cases. + +Thu Sep 8 23:39:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: patch from Stéphane Bidoul to compile without schematron + +Wed Sep 7 00:16:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: patch from Oleg Paraschenko to fix xmlDebugDumpNode() + when handled a namespace node. + +Sun Sep 4 23:36:45 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * NEWS elfgcchack.h testapi.c doc/*: updated the docs and rebuild + releasing 2.6.21 + * include/libxml/threads.h threads.c: removed xmlIsThreadsEnabled() + * threads.c include/libxml/threads.h xmllint.c: added the more + generic xmlHasFeature() as suggested by Bjorn Reese, xmllint uses it. + +Sun Sep 4 22:45:49 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* configure.in: prepare for release + * xpath.c: work for #303289, fix a formatting bug for MIN_INT + +Sun Sep 4 15:48:57 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: real fix for #314881 and #314759 is was a bit more complex + than initially expected as ctxt->error == NULL had behaviour side + effects at the compilation level itself. + +Sun Sep 4 14:01:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c xpath.c include/libxml/pattern.h: fixing yet another + pattern induced XPath bug #314282 + * relaxng.c: reverted back last change it was seriously broken + +Sat Sep 3 16:51:55 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlsave.c: check for NULL to prevent crash with meta elements + +Sat Sep 3 16:26:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: structured error reporting problem with Relax-NG + should fix #314881 and #314759 + +Sat Sep 3 15:42:29 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: fixes a portability problem raised by C370 on Z/OS + +Sat Sep 3 15:26:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c tree.c valid.c: fixing a number of issues raised by xml:id + but more generally related to attributes and ID handling, fixes + #314358 among other things + +Fri Sep 2 14:26:43 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c parserInternals.c: avoid passing a char[] as snprintf + first argument. + * threads.c include/libxml/threads.h: implemented xmlIsThreadsEnabled() + based on Andrew W. Nosenko idea. + * doc/* elfgcchack.h: regenerated the API + +Thu Sep 1 14:44:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: the use of AM_PATH_PYTHON is not portable enough + reverting back to AM_PATH_PROG + +Thu Sep 1 11:42:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: Applied the last patch from Gary Coady for #304637 + changing the behaviour when text nodes are found in body + * result/HTML/*: this changes the output of some tests + +Thu Sep 1 11:22:37 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/downloads.html doc/xml.html: adding reference to Bull AIX rpms + c.f. #160598 + +Wed Aug 31 11:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xml2-config.in: removed the obsolete --libtool-libs option, c.f. + bug #314853 + +Fri Aug 26 17:33:26 CEST 2005 Rob Richards <rrichards@ctindustries.net> + + * xmlsave.c: move handling of meta element for http-equiv in XHTML docs + to serialization and no longer modify internal tree. + +Fri Aug 26 00:51:58 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: the profiling usually don't work, disabled + * doc/*: rebuilt + +Thu Aug 25 23:47:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: trying to fix the first part of #310033 by + detecting gcc <= 3.2 + +Thu Aug 25 22:13:37 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c: fixed bug #310033, the URI extraction code given a + node is a bit twisted and broke in the last months. + +Thu Aug 25 16:18:15 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c result/XPath/xptr/strrange2: uninitialized field and + fix on test. + +Thu Aug 25 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: change verbosity depending on API + * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: get back + to previous outputs + +Thu Aug 25 15:14:56 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c SAX2.c debugXML.c tree.c valid.c xmlreader.c + xmllint.c include/libxml/HTMLparser.h include/libxml/parser.h: + added a parser XML_PARSE_COMPACT option to allocate small + text nodes (less than 8 bytes on 32bits, less than 16bytes on 64bits) + directly within the node, various changes to cope with this. + * result/XPath/tests/* result/XPath/xptr/* result/xmlid/*: this + slightly change the output + +Thu Aug 25 12:16:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: patch from Andrew W. Nosenko, use se $GCC = 'yes' + instead of $CC = 'gcc' because GCC may have a different name + +Thu Aug 25 00:18:20 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: changes the way the python binary is found, should + also fix bug #308004 + +Wed Aug 24 16:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: found another bug while looking at #309616 on missing + entities. + * result/ent2.sax* result/ent7.sax* result/xml2.sax*: this changed the + SAX stream in missing conditions for a few tests + +Wed Aug 24 16:19:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c: applied the patch suggested #309565 which can avoid + looping in error conditions. + +Wed Aug 24 16:04:17 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c tree.c: line numbers are now carried by most nodes, fixing + xmlGetLineNo() c.f. bug #309205 + +Wed Aug 24 14:43:34 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c error.c include/libxml/xmlerror.h: finally converted + the encoding module to the common error reporting mechanism + * doc/* doc/html/libxml-xmlerror.html: rebuilt + +Wed Aug 24 11:35:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xpath.c: removed a potentially uninitialized variable error + * python/generator.py: fixed a deprecation warning + * python/tests/tstLastError.py: silent the damn test when Okay ! + +Wed Aug 24 00:11:16 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX2.c globals.c runtest.c testC14N.c testapi.c tree.c + include/libxml/SAX2.h include/libxml/xmlregexp.h: fixed compilation + when configured --without-sax1 and other cleanups fixes bug #172683 + * doc/* elfgcchack.h: regenerated + +Tue Aug 23 20:05:05 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #170489 reported by Jirka Kosek + * test/valid/objednavka.xml test/valid/dtds/objednavka.dtd + result/valid/objednavka*: added the test to the regression suite. + +Tue Aug 23 18:04:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c include/libxml/HTMLparser.h: added a recovery mode + for the HTML parser based on the suggestions of bug #169834 by + Paul Loberg + +Tue Aug 23 15:38:46 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h testapi.c doc/*: regenerated + * schematron.c: fixed a compilation problem + * xmlregexp.c include/libxml/xmlregexp.h: some cleanups and one bug fix + * result/expr/base: slightly changes the number of Cons. + +Mon Aug 22 23:19:50 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h testapi.c doc/*: rescanned code and rebuilt + * xmlregexp.c: small cleanup + * include/libxml/schematron.h include/libxml/xmlexports.h + include/libxml/xmlversion.h.in: cleanup problems from code scanner + +Mon Aug 22 18:00:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: applied patch from Kuba Nowakowski fixing bug + #313982 + * result/schemas/bug313982* test/schemas/bug313982*: also added + the test case to the regression suite. + +Mon Aug 22 17:50:20 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c: printed the wrong string + +Mon Aug 22 16:42:07 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c xmlregexp.c include/libxml/xmlregexp.h: exported + xmlExpExpDerive(), added it to the testRegexp command line + tool when providing multiple expressions. + +Mon Aug 22 14:57:13 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am result/expr/base test/expr/base: added the first + regression test suite set for the new expression support + +Mon Aug 22 13:49:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed an uninitialized variable + * xmlregexp.c include/libxml/xmlregexp.h: extended the API to + add the parser, serializer and some debugging + * include/libxml/xmlversion.h.in: made the new support compiled + by default if Schemas is included + * testRegexp.c: cleanup and integration of the first part of the + new code with a special switch + * xmllint.c: show up Expr in --version if compiled in + * include/libxml/tree.h: moved the xmlBuffer definition up + +Mon Aug 22 12:11:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Some preparation for the creation of a graph + of imported/included/redefined schemas; this is needed for + at least the redefinitions. + Centralized the creation of the parser context in one function. + +Mon Aug 22 02:19:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c include/libxml/xmlregexp.h: pushing the formal expression + handling code to have it in CVs from now. Not plugged, and misses + APIs it's not compiled in yet. + +Sat Aug 20 23:13:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied another patch from Rob Richards to fix + xmlTextReaderGetAttributeNs and xmlTextReaderMoveToAttributeNs + +Wed Aug 17 09:06:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Rob Richards to fix + xmlTextReaderGetAttribute behaviour with namespace declarations + +Fri Aug 12 14:12:56 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlerror.h: + Changed output for keyref-match errors; the target-node will + be now reported rather than the scope-node of the keyref + definition - allowing easier chasing of instance errors. + This was reported by Guy Fabrice to the mailing list. + Some initial parsing code for schema redefinitions. + * result/schemas/bug303566_1_1.err + result/schemas/bug312957_1_0.err: Adapted test results due + to the keyref changes. + +Fri Aug 12 12:17:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * valid.c: applied patch from Derek Poon fixing bug #310692 + +Wed Aug 10 23:39:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fix for bug #312945 as pointed by Dean Hill, the + context type was not always properly initialized. + +Wed Aug 10 18:21:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed bug #307377 about validation of choices in + list values. + * test/relaxng/307377* result/relaxng/307377* Makefile.am runtest.c: + added examples to the regression tests, problem is that streaming + version gives slightly more informations. + +Wed Aug 10 15:25:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixed bug #302302, nasty but the fix is rather simple. + +Wed Aug 10 11:59:46 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/any6_1_0*: Added missing test results. + +Tue Aug 9 23:37:22 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixed a determinism detection problem exposed by + ##other tests commited by Kasimier, also added a small speedup + of determinism detection. + * test/results/any6_2_0* any8_1_0* any7_1_2* any7_2_2*: added + the results to the regression tests now + +Tue Aug 9 15:54:09 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/any7_2.xml test/schemas/any6_2.xsd + test/schemas/any8_1.xsd test/schemas/any8_0.xml: + Added some more tests for element wildcards. + +Tue Aug 9 14:22:47 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed #312957 reported by Carol Hunter: + streaming XPath states were not popped in every case, + thus failed to resolve correctly for subsequent input. + * test/schemas/bug312957* result/schemas/bug312957*: + Added the test submitted by Carol Hunter. + +Tue Aug 9 13:07:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: trying to nail down the remaining + ##other issues + * result/schemas/any7* test/schemas/any7: completed the tests + and added the results + * result/schemas/any3_0_0.err result/schemas/any5_0_0.err + result/schemas/any5_1_0.err: this slightly chnages the output + from 3 existing tests + +Mon Aug 8 22:33:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c xmlschemastypes.c: applied patch from + Marcus Boerger to remove warnings on Windows. + +Mon Aug 8 16:43:04 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c include/libxml/xmlsave.h: fixed #145092 by adding + an xmlSaveOption to omit XML declaration + +Mon Aug 8 15:44:54 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixed bug #310333 with a patch close to the provided + patch for HTML UTF-8 serialization + * result/HTML/script2.html: this changed the output of that test + +Mon Aug 8 15:01:51 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixed bug #310264, basically it's about reentrancy + of count based transition, when going though the counter must + be reset to 0 + * test/schemas/bug310264* result/schemas/bug310264*: added the + regression test. + +Mon Aug 8 14:40:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a memory leak: xmlSchemaFreeAnnot() was + only freeing the first annotation in the list. + +Mon Aug 8 09:44:34 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied patch from Rob Richards fixing + xmlTextReaderGetAttribute + +Mon Aug 8 01:41:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed an uninitialized memory access spotted by + valgrind + +Sun Aug 7 12:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * test/relaxng/docbook_0.xml: get rid of the dependancy on a locally + installed DTD + * uri.c include/libxml/uri.h xmlIO.c nanoftp.c nanohttp.c: try to + cleanup the Path/URI conversion mess, needed fixing in various + layers and a new API to the uri module which also fixes #306861 + * runtest.c: integrated a regression test specific to check the + URI conversions done before calling the I/O handlers. + +Sat Aug 6 11:06:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/XSLT.html doc/xml.html: small doc fix for #312647 + +Tue Aug 2 13:26:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js: applied patch from Rob Richards to allow + disabling modules in win32, fixes #304071 + +Mon Aug 1 07:18:53 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: applied fix from Jakub Piotr Clapa for + xmlAttr.parent(), closing #312181 + +Sun Jul 31 18:48:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c: report improvement + * test/schematron/zvon* result/schematron/zvon*: more tests + +Sun Jul 31 16:02:59 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.msvc win32/configure.js: applied patch from Rob + Richards to add schematron to the build on Windows + * test/schematron/zvon3* result/schematron/zvon3*: second test + * test/schematron/zvon10* result/schematron/zvon10*: this is the + real second test 10 and 2 are swapped. + +Sun Jul 31 15:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c: more bug fixes, improve the error reporting. + * test/schematron/zvon2* result/schematron/zvon2*: second test + +Sun Jul 31 14:15:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c: fixing the loop bug, fixing schematron + text error rendering + * Makefile.am result/schematron/* test/schematron/zvon1*.sct: + started integrating within "make tests" + +Sat Jul 30 17:26:58 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * test/schematron/*: a few first tests from Zvon unfortunately + with the old syntax + +Sat Jul 30 17:08:07 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c include/libxml/schematron.h: commiting + work done on the plane last week-end + +Sat Jul 30 15:16:29 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: allows an extra argument to subset the tests + * xmlregexp.c: big speedup for validation, basically avoided + transition creation explosion when removing epsilon transition + +Sat Jul 30 00:00:46 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am globals.c parserInternals.c xmlreader.c xmlunicode.c + xmlwriter.c: more cleanups based on sparse reports, added + "make sparse" + +Fri Jul 29 12:11:25 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: don't output any message on failed resolver lookups, + better done by the python user provided resolver layer. + +Fri Jul 29 01:48:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c SAX2.c encoding.c globals.c parser.c relaxng.c + runsuite.c runtest.c schematron.c testHTML.c testReader.c + testRegexp.c testSAX.c testThreads.c valid.c xinclude.c xmlIO.c + xmllint.c xmlmodule.c xmlschemas.c xpath.c xpointer.c: a lot of + small cleanups based on Linus' sparse check output. + +Thu Jul 28 21:28:33 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/Makefile.am: added schematron.h, oops ... + +Thu Jul 28 02:38:21 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Added creation of the content type of + xs:anyType. This is needed when trying to extend xs:anyType + (although it makes no sense to extend it; IMHO the schema + people should have ruled this out). This was reported + by Yong Chen to the mailing list. + * xmlschemas.c: Fixed handling of xs:anyType in + xmlSchemaCheckCOSCTExtends() (reported by Young Chen). Tiny + adjustment to an error report output. + * test/schemas/extension2* result/schemas/extension2*: + Added a test case provided by Young Chen. + +Mon Jul 25 11:41:18 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * uri.c: enhanced xmlBuildRelativeURI to allow the URI and the + base to be in "relative" form + +Sun Jul 24 10:25:41 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * schematron.c xmllint.c: started adding schematron to the xmllint + tool, the report infrastructure is gonna be fun. + +Sat Jul 23 23:23:51 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/any6* test/schemas/any7*: Added regression tests + (they fail currently), but did not added results yet. + +Sat Jul 23 23:07:05 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed the workaround code in + xmlSchemaValidateElemWildcard() for the <any> wildcard + with namespace == ##other. Support for such wildcards was + implemented by Daniel at the automaton level recently, and + the workaround code iterfered with it. + +Sat Jul 23 10:55:50 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c include/libxml/pattern.h: changed xmlPatterncompile + signature to pass an int and not an enum since it can generate + ABI compat troubles. + * include/libxml/schematron.h schematron.c: adding the new + schematron code, work in progress lots to be left and needing + testing + * include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h.in + Makefile.am configure.in: integration of schematron into the + build + * xpath.c include/libxml/xpath.h: adding flags to control compilation + options right now just XML_XPATH_CHECKNS. + +Sat Jul 23 16:39:35 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed an "internal error" message from + xmlSchemaBuildAContentModel() when an empty model group + definition is hit. + +Sat Jul 23 00:34:07 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Changed xmlCompileStepPattern() and + xmlCompileAttributeTest() to handle the "xml" prefix without + caring if the XML namespace was supplied by the user. + +Fri Jul 22 00:08:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed xmlSchemaPSimpleTypeErr(), which did not + output the given string arguments correctly. + +Thu Jul 21 09:21:00 EDT 2005 Daniel Veillard <daniel@veillard.com> + + * error.c globals.c parser.c runtest.c testHTML.c testSAX.c + threads.c valid.c xmllint.c xmlreader.c xmlschemas.c xmlstring.c + xmlwriter.c include/libxml/parser.h include/libxml/relaxng.h + include/libxml/valid.h include/libxml/xmlIO.h + include/libxml/xmlerror.h include/libxml/xmlexports.h + include/libxml/xmlschemas.h: applied a patch from Marcus Boerger + to fix problems with calling conventions on Windows this should + fix #309757 + +Wed Jul 20 14:45:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: an optimization of the char data inner loop, + can gain up to 10% in pure SAX2 parsing speed + * xmlschemas.c: applied patch from Kupriyanov Anatolij fixing + a bug in XML Schemas facet comparison #310893 + +Tue Jul 19 17:27:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: fixed the error reporting for + not transitions + * result/schemas/any5_0_0* result/schemas/any5_0_2* + result/schemas/any5_1_0*: fixed output + +Tue Jul 19 15:34:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: fixing + bug #172215 about foreign namespaces by adding support for + negated string transitions. Error messages still need to be + improved. + * test/schemas/any5* result/schemas/any5*: adding regression + tests for this. + +Tue Jul 19 12:33:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Alexander Pohoyda fixing xmlGetNodePath + on namespaced attributes #310417. + +Mon Jul 18 23:01:15 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: --nonet was + ducplicated + +Mon Jul 18 20:49:28 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed xsd:all when used in conjunction with + substitution groups + * test/schemas/allsg_* result/schemas/allsg_*: adding specific + regression tests, strangely missing from NIST/Sun/Microsoft + testsuites + +Sun Jul 17 07:11:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed bug #307508, a bad automata was built but + this showed as an indeterminist result + +Thu Jul 14 17:53:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: found the last bug raised by NIST tests in + comparing base64 strings, result from runsuite: + ## NIST test suite for Schemas version NIST2004-01-14 + Ran 23170 tests (3953 schemata), no errors + +Thu Jul 14 14:57:36 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testRegexp.c: fixed where xmlMemoryDump() should be called. + * xmlregexp.c: fixed handling of {0}, \n, \r and \t, two bugs + affecting NIST regression tests + +Thu Jul 14 11:30:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied a patch from Gerrit P. Haase to add + module support on cygwin + +Thu Jul 14 10:56:42 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed a potential buffer overrun error introduced + on last commit to htmlParseScript() c.f. #310229 + +Thu Jul 14 23:48:17 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c: Changed the behaviour of xmlXPathEqualNodeSetFloat to + return TRUE if a nodeset with a numeric value of NaN is compared + for inequality with any numeric value (bug 309914). + +Thu Jul 14 01:03:03 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c relaxng.c xmlreader.c xmlschemas.c include/libxml/relaxng.h + include/libxml/xmlschemas.h: applied patch from Marcus Boerger + to route relaxng and schemas error messages when using the reader + through the structured interface if activated. + * elfgcchack.h doc/* testapi.c: rebuilt since this add new APIs + to test. + +Wed Jul 13 18:35:47 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied UTF-8 script parsing bug #310229 fix from + Jiri Netolicky + * result/HTML/script2.html* test/HTML/script2.html: added the test + case from the regression suite + +Tue Jul 12 17:08:11 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: fixed bug #310105 with http_proxy environments with + patch provided by Peter Breitenlohner + +Mon Jul 11 00:28:10 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am NEWS configure.in doc/*: preparing release 2.6.20 + * xmllint.c: removed a compilation problem + +Sun Jul 10 23:33:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am README README.tests Makefile.tests Makefile.am: + preparing to make testsuite releases along with code source releases + * gentest.py testapi.c: fixed a couple of problem introduced by + the new Schemas support for Readers + * xpath.c: fixed the XPath attribute:: bug #309580, #309864 in a crude + but simple way. + * xmlschemas.c include/libxml/tree.h: fixed a couple of problems + raised by the doc builder. + * doc/*: made rebuild + +Sun Jul 10 21:51:16 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed a bug introduced on last commit + +Sun Jul 10 21:00:54 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.html doc/xmllint.xml: fixed a typo + pointed by Jeroen Ruigrok + * include/libxml/xmlreader.h include/libxml/xmlschemas.h: increased + the APIs for xmlReader schemas validation support + * xmllint.c xmlreader.c xmlschemas.c: xmlReader schemas validation + implementation and testing as xmllint --stream --schema ... + +Sun Jul 10 16:11:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlwin32version.h.in: try to avoid conflicts. + +Sat Jul 9 19:29:10 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix for #309761 from Dylan Shell + * xmlschemas.c include/libxml/xmlschemas.h: added xmlSchemaSAXPlug + and xmlSchemaSAXUnplug generic APIs for SAX Schemas validation. + * xmllint.c: couple of fixes plus added descriptions for --sax and + --sax1 + +Fri Jul 8 23:35:00 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added c-props-correct constraint to check + for equal cardinality of keyref/key. + * include/libxml/xmlerror.h: Added an error code. + +Fri Jul 8 21:56:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Fixed evaluation of attributes. Actually only + attribute at the first level were evaluated (e.g. "@attr"); + expression like "foo/@attr" always failed. + +Fri Jul 8 20:04:29 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: tiny fix in xmlSchemaValidateStream() if a + user-provided SAX handler is given. + +Fri Jul 8 19:25:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix some potential leaks in error cases. + * xmllint.c: added --sax, to allow testing of --schemas --sax and + various other combinations. + * xmlschemas.c: fix a couple of tiny problems in + xmlSchemaValidateStream() + +Fri Jul 8 18:34:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Changed xmlSchemaValidateFile() to use + xmlSchemaValidateStream() internally. + +Fri Jul 8 17:02:14 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * test/relaxng/docbook_0.xml: added the missing entity to the + document internal subset to avoid errors if the DocBook catalogs + are not there + * xmlschemas.c: first cut at implementing xmlSchemaValidateStream() + untested yet + +Wed Jul 6 15:45:48 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed problem with free on dupl attribute in + dtd (bug309637). + * test/errors/attr3.xml, result/errors/attr3.*: added + regression test for this + +Wed Jul 6 13:11:35 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * win32/Makefile.msvc: try again to fix file format for Windows + +Wed Jul 6 12:20:13 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * win32/Makefile.msvc: removed spurious ^M + * runtest.c: added check for option O_BINARY + * test/schemas/bug309338*, result/schemas/bug309338*: changed + sticky tag to 'binary' + +Wed Jul 6 10:38:02 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * debugXML.c: excluded content string check for XML_ELEMENT_DECL + in xmlCtxtGenericNodeCheck + * runtest.c: changed "open" calls to include O_BINARY for Windows + +Wed Jul 6 17:14:03 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing bug #166777 (and #169838), it was an heuristic + in areBlanks which failed. + * result/winblanks.xml* result/noent/winblanks.xml test/winblanks.xml: + added the input file to the regression tests + +Wed Jul 6 13:40:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Fixed bug #309338, reported by Kupriyanov + Anotolij. + * test/schemas/bug309338* result/schemas/bug309338*: + Added a regression test for the above bug. + +Tue Jul 5 16:03:05 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: first steps toward a testsuite dist + * SAX2.c include/libxml/xmlerror.h: fixed bug #307870 + +Tue Jul 5 12:38:36 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * runsuite.c runtest.c: Tiny portability adjustment for win. + * win32/Makefile.*: Added runtest.exe and runsuite.exe to + be created. + +Mon Jul 4 17:44:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c: first stb at unimplemnted detection + * runtest.c: fixing Windows code + +Mon Jul 4 17:19:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c: fix on schemas error + * runtest.c: portability glob() on Windows + +Mon Jul 4 16:23:54 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c runtest.c: cleanups, logfile and portability + * xmllint.c: fixed a memory leak + +Mon Jul 4 13:11:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a bug failing to detect UTF-8 violations in + CData in push mode. + * result/errors/cdata.xml* test/errors/cdata.xml: added the test + to the regressions + +Mon Jul 4 11:26:57 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: added enhancement for #309057 in xmllint shell + +Mon Jul 4 00:58:44 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied patch from James Bursa fixing an html parsing + bug in push mode + * result/HTML/repeat.html* test/HTML/repeat.html: added the test to the + regression suite + +Sun Jul 3 23:42:31 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testapi.c tree.c: fixing a leak detected by testapi in + xmlDOMWrapAdoptNode, and fixing another side effect in testapi + seems to pass tests fine now. + * include/libxml/parser.h parser.c: xmlStopParser() is no more limited + to push mode + * error.c: remove a warning + * runtest.c xmllint.c: avoid compilation errors if only some parts + of the library are compiled in. + +Mon Jul 4 00:39:35 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: fix a problem with previous patch to + testapi.c + +Sun Jul 3 22:59:28 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c runtest.c tree.c: fixing compilations when + disabling parts of the library at configure time. + +Sun Jul 3 18:17:58 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fix bug raised by zamez on IRC + * testapi.c: regenerated, seems to pop-up leaks in new tree functions + * tree.c: added comments missing. + * doc/*: regenerated + +Sun Jul 3 18:06:55 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testapi.c runsuite.c runtest.c: fixing #307823 and a couple of + assorted bugs + * python/generator.py python/libxml2-python-api.xml: fixed + conditionals in generator too + * doc/apibuild.py doc/libxml2-api.xml doc/* elfgcchack.h: some + cleanups too and rebuilt + +Sun Jul 3 16:42:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fixed bug #307503 misplaced #ifdef + +Sun Jul 3 16:34:47 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c: expanded test + * xmlregexp.c: found and fixed the leak exposed by Microsoft regtests + +Sat Jul 2 23:38:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c: a bit of progresses on xstc + +Sat Jul 2 09:30:13 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runsuite.c: completed the simple checks for Relax-NG suites + back to the same 11 errors as in the Python runs. + +Thu Jun 30 15:01:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: complete, checking on other platforms is needed + * README: updated + * debugXML.c: fix a bug raised by bill on IRC + * relaxng.c: fix a leak in weird circumstances + * runsuite.c Makefile.am: standalone test tool agaisnt + the regression suites, work in progress + +Tue Jun 28 08:30:26 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: adding URI tests + +Mon Jun 27 23:55:56 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: adding xml:id + +Mon Jun 27 23:29:36 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: finishing XPath, adding XPointer + +Mon Jun 27 17:39:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: adding more coverage, XInclude and starting XPath + +Mon Jun 27 17:02:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c include/libxml/tree.h: Added allocation/deallocation + functions for the DOM-wrapper context. + +Mon Jun 27 15:41:30 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Commented the new functions to be experimental. + +Mon Jun 27 14:41:14 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * error.c valid.c: working some weird error reporting problem for + DTD validation. + * runtest.c: augmented with DTD validation tests + * result/VC/OneID*: slight change in validation output. + +Mon Jun 27 13:44:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: added most HTML tests + +Mon Jun 27 14:06:10 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/namespaces/reconcile/tests.xml + test/namespaces/reconcile/tests-to-c.xsl: Added initial tests + for some new DOM-wrapper helping functions. + +Mon Jun 27 14:01:06 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/xstc-to-python.xsl: Cleanup. + * xstc/sun-test-def.xml xstc/nist-test-def.xml xstc/ms-test-def.xml: + Removed, those are not needed anymore due to the new test suite. + +Mon Jun 27 11:39:50 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * result/*.sax2 MAkefile.am: added SAXv2 regression tests apparently + missing. + * runtest.c: added SAX1/SAX2 checks. + +Mon Jun 27 12:24:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c include/libxml/tree.h: Added + xmlDOMWrapReconcileNamespaces(), xmlDOMWrapAdoptNode() and + xmlDOMWrapRemoveNode() to the API. These are functions intended + to be used with DOM-wrappers. + +Mon Jun 27 10:14:57 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: continue to increase the tests + +Mon Jun 27 09:21:49 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: continue to increase the tests + +Mon Jun 27 01:01:32 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * runtest.c: continue to increase the tests + +Sun Jun 26 20:08:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/valid.h valid.c: avoid name glob in agruments as + it matches the glob() routine. + * runtest.c Makefile.am: first steps toward a C regression test + framework. + +Sat Jun 25 01:37:22 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * configure.in: fixed a problem with the detection of + ss_family for ipV6, as reported on the mailing list by + Doug Orleans. + +Tue Jun 21 10:44:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/empty-value* result/schemas/empty-value*: + Added regression tests (from Dhyanesh). + +Tue Jun 21 10:35:43 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed NULL values to be validated as empty + string values (reported by Dhyanesh to the mailing list). + Adjusted text concatenation of mixed content. + +Mon Jun 20 18:11:32 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c valid.c: applied patch from Rob Richards for removal + of ID (and xml:id) + * xmlreader.c: applied patch from James Wert implementing + xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml + +Thu Jun 16 14:38:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed SAX2 validation: grow of internal + namespace list, appending of element character content. + * xstc/xstc.py: Added "--sax" option for SAX2 validation. + +Wed Jun 15 15:34:52 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Added missing function descriptions. + +Wed Jun 15 15:26:14 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: if sax1 is used and input is a file use the old + API xmlParseFile() + * xmlschemas.c: cleanups + * doc/* testapi.c elfgcchack.h: rebuilt to add python bindings + for the new functions in Schemas. + +Wed Jun 15 14:50:48 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlschemas.h: Added + xmlSchemaValidateFile() to the public API. This will use + SAX2-driven validation. + +Wed Jun 15 11:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/bug306806_1_0 result/schemas/bug306806_1_0.err: + Added schema test results (Tom Browder, bug #306806). + +Wed Jun 15 11:08:34 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/bug306806_1.xsd test/schemas/bug306806_0.xml: + Added schema tests submitted by Tom Browder (bug #306806). + +Tue Jun 14 15:03:22 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * pattern.c: adjusted last change to xmlCompilePathPattern, + fixed one compilation warning + +Tue Jun 14 21:19:16 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Some changes/fixes to the streaming evaluation. + * xmlschemas.c: A bit of support for parsing the schema for + schema. Fixed attribute derivation when the use is + "prohibited" and was "optional". Fixed an attribute construction + bug, a left-over from the time, where <complexContent>, + <extension>, etc. where created as structs. + +Tue Jun 14 12:35:12 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * libxml-2.0.pc.in: removed a redundant include path + +Mon Jun 13 14:58:33 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/Makefile.am: Some more adjustments. + +Mon Jun 13 14:35:59 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/Makefile.am: Changed test extraction process, since some + boxes don't know about "tar --strip-path". + +Mon Jun 13 13:39:43 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed a bug exposed by Rob Richards in the mailing-list + * result//compare0* test//compare0*: added the regression test in + the suite as this went unnoticed ! + +Wed Jun 9 11:07:42 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * pattern.c, xpath.c, include/libxml/pattern.h: Further + enhancement for XPath streaming, consolidated with + schemas usage of pattern.c. Added a new enum + xmlPatternFlags. + * doc/*, testapi.c, elfgcchack.h: updated to reflect new + enum. + * test/XPath/tests/mixedpat, test/XPath/docs/mixed, + result/XPath/mixedpat: added regression test for problems + reported in bug306348 + +Thu Jun 9 16:51:31 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Changed non-prefixed QNames to be bound to a + default namespace if existent. + +Thu Jun 9 15:11:38 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Fixed a bug which I invented: hexBinary's string + values were not duplicated corrently when creating a computed value + in xmlSchemaValAtomicType. + +Thu Jun 9 13:20:57 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c result/schemas/include1_0_0.err: + Fixed an attribute fixed/default value constraint error. + +Thu Jun 9 12:51:23 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/*: Adapted regression test results. + +Thu Jun 9 12:22:45 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlschemastypes.c include/libxml/schemasInternals.h + include/libxml/xmlschemastypes.h: Changed the validation process + to be able to work in streaming mode. Some datatype fixes, + especially for list and union types. Due to the changes the + error report output has changed in most cases. Initial migration to + functions usable by both, the parser and the validator. This should + ease a yet-to-come XS construction API in the long term as well. + +Thu Jun 9 10:16:11 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Malcolm Rowe to avoid namespace + troubles on rollback parsing of elements start #304761 + * test/nsclean.xml result/noent/nsclean.xml result/nsclean.xml*: + added it to the regression tests. + +Thu Jun 9 00:33:50 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/xmlerror.h: applied patch from Rob Richards + for xml:space and xml:lang handling with SAX2 api. + +Wed Jun 8 19:41:38 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * globals.c: applied patch from Morten Welinder, closing bug #306901 + on compiling subsets of the library + +Wed Jun 8 19:11:42 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/Makefile.am xstc.py xstc-to-python.xsl: Adapted the + XS tests to use the new release of tests and test-definitions. + +2005-06-07 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c: fix rendering of attributes when parent node + is not in the node set + +2005-06-06 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c: fixed xml attributes processing bug in exc c14n + * xmllint.c: added --exc-c14n command line option + +Mon Jun 6 06:43:33 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c, pattern.c: Enhanced xmlXPathRunStreamEval, fixed + handling of depth/level for cases like union operator + (bug #306348 reported by Bob Stayton). Also enhanced + several comments throughout pattern.c. + * doc/apibuild.py: fixed problem in handling of + 'signed' declaration. Rebuilt the docs. + +Tue May 31 20:35:27 PDT 2005 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: Enhanced handling of xml:base for included + elements, fixing bugs 169209 and 302353. + +Wed May 25 18:59:53 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed facet errors to be channelled back for + union type members; facet-validation will stop now on the + first error. Reported by GUY Fabrice to the mailing-list. + * xmlschemastypes.c: Changed to ignore lengh-related facet + validation for QNames and NOTATIONs as proposed by the + schema people. + * test/schemas/union2* result/schemas/union2*: Added + regression tests for union types (by GUY Fabrice). + +Fri May 20 20:48:08 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: applied patch from Mark Vakoc fixing saving of + CDATA with NULL content. + +Thu May 12 15:14:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Changed the VALID_TZO macro to restrict + the timezone to -840 to 840. + +Thu May 12 15:05:11 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Applied patch from Steve Nairn (bug #303670) + for "signed int" of the date-time timezone field. Silenced + a warning. + +Wed May 11 20:04:09 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch for replaceNode from Brent Hendricks + +Tue May 10 17:27:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed bug #303682 of a leak reported by Malcolm Rowe + +Tue May 10 11:50:16 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * testapi.c: applied patch from Steve Nairn tof fix the compilation + problem exposed in bug #303640 + +Tue May 10 11:11:26 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/bug303566_1* result/schemas/bug303566_1_1*: + Added regression a test provided by Heiko Oberdiek (bug #303566). + +Mon May 9 17:56:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c: Changed the XPath "." to resolve only on the first + level for XML Schema IDCs (bug #303566 reported by Heiko Oberdiek). + This should not affect pattern-like resolution on every level. + +Sun May 8 13:35:39 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: fixed #169630 segfault in xmlMemDisplay + +Fri May 6 13:40:03 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: fixing bug #303068 increasing the nanoftp buffer. + * doc/apibuild.py: fixed __attribute() parsing problem + * doc/* testapi.c: regenerated the descriptions and docs. + +Wed May 4 11:16:00 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in threads.c: on linux/gcc use weak definitions + to avoid linking with pthread library on non-threaded environments. + * xpath.c: applied patch from Mark Vakoc w.r.t. a buggy namespace + list allocation. + +Fri Apr 29 11:27:37 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * parser.c: Fixed a test for duplicate attributes: Non-prefixed + attributes were treated as being bound to the default namespace. + +Tue Apr 19 17:51:32 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Fixed date-time related validation + (reported by David Crossley, bug #300576). + +Tue Apr 19 16:55:40 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlregexp.c: Removed 5 unnecessary + dereferences (reported by Andriy, bug #301074). + +Tue Apr 19 22:33:18 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c: Added some code to avoid integer overflow for + ceil, floor and round functions (bug 301162) + +Tue Apr 19 13:21:54 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed workaround for bug #172215, since it + does more harm in some scenarios. Added some of the + "Particle Restriction OK" constraints - not yet enabled. + +Mon Apr 18 13:02:55 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * result/schemas/changelog093*: Added test results. + +Mon Apr 18 12:42:14 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added output of canonical values in + identity-constraint error messages. + * xmlschemastypes.c include/libxml/xmlschemastypes.h: + Added xmlSchemaGetCanonValueWhtsp() to the API. + Further enhancement of the canonical value + conversion. + * test/schemas/changelog093_0.*: Added test with an XSD + submitted by Randy J. Ray. + +Fri Apr 15 09:33:21 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * valid.c: Applied Daniel's fix for memory leak in dtd + prefix (bug 300550). + * xpath.c: minor change to comment only + +Thu Apr 14 20:52:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: added the call to the breakpoint routine + when a monitored block is reallocated or freed + +Wed Apr 13 05:55:51 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: applied patch from Aron Stansvik for bug #172525 + about HTTP query string parameter being lost + +Tue Apr 12 04:03:32 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/libxml.py: applied patch from Brent Hendricks + adding namespace removal at the python level #300209 + * python/tests/Makefile.am python/tests/nsdel.py: added the regression + test + +Sun Apr 10 09:03:22 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed several places where memory cleanup was not + properly done after an error was detected (problem was + reported on the mailing list by Pawel Palucha) + +Fri Apr 8 21:58:04 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added substitution group constraints; changed + the build of the pre-computed substitution groups. Channeled + errors during xsi assembling of schemas to the validation + context. Fixed a big memory leak, which occured when using + IDCs: the precomputed value of attributes was not freed if + the attribute did not resolve to an IDC field (discovered + with the help of Randy J. Ray's schema, posted to the + xmlschema-dev maling list). + +Fri Apr 8 13:22:01 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added "Particle correct 2" to parsing of model groups. + Added handling substitution groups inside <choice> and <sequence>; + for <all> this is not supported yet. Changed circular checks for + model groups definitions. "memberTypes" are processed at different + levels now: component resolution first, construction later; this + goes hand in hand with a global change to handle component + resolution in a distinct phase. Fixed invalid default values for + elements to mark the schema as invalid; this just resulted in an + error report previously, but the schema was handled as valid. + Separated the assignment of the model groups to referencing + model group definition references (i.e. particles); this was + needed to perform the circularity check for model group definitions. + Added "Element Declaration Properties Correct (e-props-correct)" + constraints. Separated component resolution for simple/complex + types. + * include/libxml/schemasInternals.h: Added a flag for substitution + group heads. + +Wed Apr 6 23:14:03 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.*: make install cleanup + +Wed Apr 6 22:42:23 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.mingw: fixed mingw compilation + * testModule.c: removed mingw warnings + +Wed Apr 6 21:59:11 CEST 2005 Igor Zlatkovic <igor@zlatkovic.com> + + * .cvsignore: added Eclipse project files to ignore list + +Wed Apr 6 16:08:10 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed the bug in lang() as raised by Elliotte Rusty Harold + * result/XPath/tests/langsimple test/XPath/tests/langsimple + test/XPath/docs/lang: added a regression test + +Tue Apr 5 23:48:35 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: applied fix from Rob Richards to compile on Windows. + +Tue Apr 5 17:02:58 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added "Type Derivation OK (Complex)" constraints + and anchored them in the "Element Locally Valid (Element)" + constraints. This restricts the type substitution via "xsi:type". + +Tue Apr 5 13:10:06 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: patch from Matthew Burgess to improve some schemas + facets validation messages. + +Sat Apr 2 12:48:41 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/* configure.in NEWS: preparing release 2.6.19, updated docs and + rebuilding. + +Sat Apr 2 13:27:32 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am: integrated fixup-tests.py + +Fri Apr 1 19:14:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: fixed a lack of comment and missing test for + a pointer in the API. + +Fri Apr 1 17:54:22 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/fixup-tests.py: A tiny script to fixup some of the schema + files used for the tests. + +Fri Apr 1 17:33:50 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h + result/schemas/src-element2-*.err result/schemas/element-*.err: + Committing again, since the CVS server aborted. + +Fri Apr 1 15:29:27 CEST 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Corrected 'length' facet validation for + QNames and notations. Corrected xmlSchemaGetCanonValue: some + data types did not return a value if already in normalized + form. + * xmlschemas.c include/libxml/schemasInternals.h: + Eliminated creation of structs for <restriction>, <extension>, + <simpleContent>, <complexContent>, <list> and <union>: the + information is now set directly on the corresponding simple/ + complex type. Added some more complex type constraints. + Added facet derivation constraints. Introduced "particle" + components, which seem to be really needed if applying + constraints. Corrected/change some of the parsing functions. + This is all a bit scary, since a significant change to the code. + * result/schemas/src-element2-*.err result/schemas/element-*.err: + Adapted regression test results. + +Fri Apr 1 16:07:59 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h + format to cope with gcc4 change of aliasing allowed scopes, had + to add extra informations to doc/libxml2-api.xml to separate + the header from the c module source. + * *.c: updated all c library files to add a #define bottom_xxx + and reimport elfgcchack.h thereafter, and a bit of cleanups. + * doc//* testapi.c: regenerated when rebuilding the API + +Thu Mar 31 17:20:32 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: fixed bug reported by Petr Pajas, in the absence of + encoding UTF-8 should really be assumed. This may break if + the HTTP headers indicates for example ISO-8859-1 since this + then becomes a well formedness error. + +Thu Mar 31 16:57:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixed #172260 redundant assignment. + * parser.c include/libxml/parser.h: fixed xmlSAXParseDoc() and + xmlParseDoc() signatures #172257. + +Thu Mar 31 16:11:10 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix potential crash if ctxt->sax->ignorableWhitespace + is NULL as reported by bug #172255 + +Thu Mar 31 15:36:52 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed a problem in Relax-NG validation #159968 + * test/relaxng/list.* result/relaxng/list_*: added the test + to the regression suite + +Thu Mar 31 13:06:02 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: fixed bug #168504 + +Thu Mar 31 12:22:54 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in nanoftp.c nanohttp.c xmllint.c + macos/src/config-mac.h: use XML_SOCKLEN_T instead of SOCKLEN_T + since apparently IBM can't avoid breaking common defines #166922 + +Thu Mar 31 10:41:45 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fix unitinialized variable in not frequently used + code bug #172182 + +Thu Mar 31 00:45:18 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.py: another patch from Brent + Hendricks to add new handlers with the various validity contexts + * python/tests/Makefile.am python/tests/validDTD.py + python/tests/validRNG.py python/tests/validSchemas.py: also + added the regression tests he provided + +Wed Mar 30 09:39:27 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c: applied patch from Brent + Hendricks to avoid leak in python bindings when using schemas + error handlers. + +Tue Mar 29 22:29:28 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixing bug 168196, <a name=""> must be URI escaped too + +Sun Mar 27 13:24:24 CEST 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: cleanup of the Prop related functions and xmlNewNodeEatName + by Rob Richards + +Thu Mar 24 19:01:22 PST 2005 William Brack <wbrack@mmm.com.hk> + + * gentest.py, testapi.c: fixed problem with 'minimal library' + compilation (LIBXML_PATTERN_ENABLED not properly checked) reported + by Greg Morgan + +Thu Mar 24 12:01:30 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed call to a facet error report: the type of + the error was wrong, resulting in a segfault (bug #171220, reported + by GUY Fabrice). + +Mon Mar 21 22:58:37 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed a stupid bug in xmlSchemaValidateAttributes, + failing to build a linked list correctly (bug #169898, reported + by bing song, hmm...). + +Mon Mar 21 21:09:07 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a segfault, which occured during bubbling + of IDC nodes (bug #170779 and #170778, reported by GUY Fabrice): + a variable was missed to be reset in a loop. Deactivated bubbling, + if not referenced by a keyref. + +Sun Mar 20 11:13:02 PST 2005 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c include/libxml/xmlerror.h: special case "DAV:" namespace + in c14n relative namespaces check and add structured error messages + to c14n code + +Thu Mar 17 12:55:23 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Removed inheritance of "mixed" content type for + short-hand restrictions of "anyType" (reported by Guy Fabrice + to the mailing list). Added the namespace conversion (chameleon + includes) for the base type reference of <restriction> and + <extension>. + * test/schemas/bug152470_1.xsd: Adapted due to the above change + of "mixed" inheritance. + +Thu Mar 17 11:03:59 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed a = -> == error pointed by GUY Fabrice + +Wed Mar 16 22:53:53 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: more debug messages from Matthew Burgess + * xmlschemastypes.c: xmlSchemaValidateLengthFacet API missing check. + +Wed Mar 16 17:37:04 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Aaaannnd putting back the previous changes done + by Daniel, which I overwrote with the previous commit. + +Wed Mar 16 17:20:25 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c xmlschemastypes.c include/libxml/xmlschemastypes.h: + Hopefully finished validation against facets to use the normalized + value of both, the facets and instance values. Added + xmlSchemaValidateLengthFacetWhtsp(), xmlSchemaValidateFacetWhtsp() + and xmlSchemaGetValType() to the schema API. + +Wed Mar 16 13:55:31 CET 2005 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: do not package .la files + * xmllint.c: applied patch from Gerry Murphy for xmllint return code + * xmlschemastypes.c: fixed a couple of missing tests of parameters + at public API entry points. + +Tue Mar 15 23:31:14 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xmlschemastypes.c: a couple of more changes to various + decimal-handling routines. Fixes python some problems + turned up by the python tests. + * Makefile.am: change SchemasPythonTests message to warn + that there are 10 'expected' errors (rather than 6) since + we now reject a '+' sign on an unsigned. + +Tue Mar 15 15:43:27 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c xmlschemastypes.h: In preparation to use + normalized values of facets during validation: changed the + arguments of some string comparison functions; added a static + xmlSchemaValidateFacetInternal() with more arguments to be + more flexible. Prepared XML_SCHEMA_FACET_ENUMERATION validation + to use the comparison functions. Fixed some assignments in + xmlSchemaValAtomicType(): total digit count, lo, mi, hi. + +Sun Mar 13 19:32:03 CET 2005 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in testapi.c doc/*: preparing release of 2.6.18 + updated docs and rebuilt + * libxml.spec.in: reactivated gcc profiling for gcc >= 4.0.0 + +Sat Mar 12 19:50:22 CET 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c: removed a static buffer in xmlByteConsumed(), + as pointed by Ben Maurer, fixes #170086 + * xmlschemas.c: remove a potentially uninitialized pointer warning + +Fri Mar 11 23:53:13 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xmlschemastypes.c: enhanced the parsing of XML_SCHEMAS_DECIMAL + and much of the routine xmlSchemaCompareDecimals. The + changes were necessary to fix a problem reported on the + mailing list by John Hockaday. + +Fri Mar 11 13:22:52 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: The schema parser will stop if components could + not be resolved. This is not conforming to the spec but for now + will avoid internal errors during type fixup and content model + creation. Restructured inclusion/import of schemata: this avoids + duplicate, self and circular inclusion. Chameleon includes are + still workarounded. Added restriction to disallow references to + non-imported namespaces. Corrected parsing of <group>. + * result/schemas/bug167754_0_0*: Added a missing test result. + +Thu Mar 10 16:02:17 CET 2005 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/encoding.html: Enriched encoding.html with more + link and foreword warning to avoid problem with ignorant + programmers, c.f #169721 + +Thu Mar 10 15:01:34 CET 2005 Daniel Veillard <daniel@veillard.com> + + * python/tests/Makefile.am python/tests/readernext.py: added + a regression test from Rob Richards for the previous bug + +Thu Mar 10 13:22:36 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: applied fix for xmlTextReaderNext() bug from + Rob Richards + +Thu Mar 10 11:35:57 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlmodule.c: second patch from Rick Jones, portability fix for + HP-UX + * doc/examples/xpath1.c doc/examples/xpath2.c: first fix from Rick Jones + to avoid warnings. + +Thu Mar 10 10:20:23 CET 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/hash.h libxml.h libxml.spec.in: some gcc4 portability + patches, including a serious aliasing bug exposed in s390 + when trying to convert data pointer to code pointer. + +Mon Mar 7 18:34:00 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Tiny restructuring of the validation start-up + functions. Added cleanup of the validation context at the + end of validation. This takes care of the validation context + being reused. + +Mon Mar 7 12:12:01 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemastypes.c: Tiny changes in the comparison functions + I forgot to commit last time. + +Fri Mar 4 22:51:42 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added IDC validation of anySimpleType attribute + values; anyway the IDC key comparison is restricted to + anySimpleType <--> string based types. For other types we + would possibly need the canonical lexical representation of + them; this sounds not performant, since we would need to + build such a representation each time we want to compare against + anySimpleType. TODO: think about buffering the canonical values + somewhere. Fixed error reports for default attributes to work + without a node being specified. This all and the enabling of IDC + validation fixes bug #165346 (reported by Benoit Gr?goire - could + not read his last name correctly from bugzilla). + +Fri Mar 4 18:57:44 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Enabled IDC parsing and validation. + * xmlschemastypes.c include/libxml/xmlschemastypes.h: + Added xmlSchemaCopyValue to the API; this was done due to + validation of default attributes against IDCs: since IDC keys + consume the precomputed value, one needs a copy. + * pattern.c: Enabled IDC support; this is currently done + via calling xmlPatterncompile with a flag arg of 1. + +Wed Mar 2 11:45:18 CET 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am doc/examples/Makefile.am python/tests/Makefile.am + xstc/Makefile.am: try to fix a problem with valgrind. + * python/generator.py python/libxml.c python/tests/Makefile.am + python/tests/tstmem.py: applied memory leak fix from Brent Hendricks + c.f. bug #165349 + +Mon Feb 28 11:18:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * tree.c: Changed xmlSearchNsByHref to call xmlNsInScope with + the prefix instead of the namespace name. + * test/schemas/annot-err_0.xsd test/schemas/element-err_0.xsd: + Adapted invalid values of the "id" attribute, since they are + validated now. + +Fri Feb 25 08:31:16 CET 2005 Daniel Veillard <daniel@veillard.com> + + * threads.c: new version with fixes from Rob Richards + +Thu Feb 24 16:37:51 CET 2005 Daniel Veillard <daniel@veillard.com> + + * threads.c: applied patch from Rich Salz for multithreading on + Windows. + +Wed Feb 23 15:04:46 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied a patch from Rob Richards fixing a couple + of bugs in the writer + +Mon Feb 21 21:51:03 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xmlsave.c: fixed problem when XMLLINT_INDENT was empty (bug 168033). + * xpath.c: fixed compilation warning, no change to logic. + * xmlschemastypes.c: fixed compilation warning, no change to logic. + +Mon Feb 21 14:48:27 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied patch from Rob Richards to fix a problem with + xmlTextWriterStartAttributeNS + +Mon Feb 21 11:41:41 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c xpath.c: fixed remaining known bugs in the XPath streaming, + and switched XPath to use it by default when possible + +Sat Feb 19 19:25:14 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: a bit of cleanup + * elfgcchack.h testapi.c doc/*: rebuilt the API the tests and + the documentation as a result. + +Fri Feb 18 20:34:03 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h: applied patch from + Aron Stansvik to add xmlTextReaderByteConsumed() + * testReader.c: added a test option + * xmlschemastypes.c: fix a lack of pointer checking in APIs + +Fri Feb 18 12:41:10 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/bug167754_0*: Added the regression test of Frans + Englich for bug #167754. + +Fri Feb 18 12:31:49 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Started support for IDC resolution to default + attributes. If building the content model for <all>: ensured + to put element declarations and not the particles into the + content model automaton (this was bug #167754, reported by + Frans Englich). + +Thu Feb 17 22:31:58 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * pattern.c pattern.h: Some experimental addition for parsing + of expressions and streamable validation. + Added xmlStreamPushAttr to the API. + +Thu Feb 17 19:57:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added validation for the attribute "id" in the + schemata; doing this needed error report fixes for notations, + facets and group. Changed NOTATION validation to work with the + declared NOTATIONs in the schema; this does have no impact on + the validation via the relaxng module. + * xmlschemastypes.c include/libxml/xmlschemastypes.h: + Added xmlSchemaNewNOTATIONValue to the API to be able to do + the NOTATION validation described above. + * test/schemas/element-err_0.xsd test/schemas/annot-err_0.xsd: + Fixed the values of the "id" attributes, which were not validated + previously. + +Thu Feb 17 12:03:46 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed comparison for default/fixed attribute + values, if the type was 'xsd:string'. Changed the comparison + for IDCs to use the whitespace aware comparison function. + * xmlschemastypes.c include/libxml/xmlschemastypes.h: + Added xmlSchemaGetCanonValue, xmlSchemaNewStringValue and + xmlSchemaCompareValuesWhtsp to the API. Added functions + to compare strings with whitespace combinations of "preserve", + "replace" and "collapse". + +Wed Feb 16 13:24:35 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Further work on IDCs, especially evaluation for + attribute nodes. + +Wed Feb 16 01:19:27 CET 2005 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fix the comment to describe the real return values + * pattern.c xpath.c include/libxml/pattern.h: lot of work on + the patterns, pluggin in the XPath default evaluation, but + disabled right now because it's not yet good enough for XSLT. + pattern.h streaming API are likely to be changed to handle + relative and absolute paths in the same expression. + +Tue Feb 15 15:33:32 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Added IDC evaluation for attribute nodes. + Made 'nil'ed elements work. Added a specific error message + for 'strict' attribute wildcards. + * include/libxml/xmlerror.h: Added an error code for + wildcards. + * result/schemas/anyAttr-processContents-err1_0_0.err: Adapted. + +Sun Feb 13 16:15:03 HKT 2005 William Brack <wbrack@mmm.com.hk> + + This change started out as a simple desire to speed up the + execution time of testapi.c, which was being delayed by + nameserver requests for non-existent URL's. From there it + just sort of grew, and grew.... + * nanohttp.c, nanoftp.c: changed the processing of URL's + to use the uri.c routines instead of custom code. + * include/libxml/xmlerror.h: added code XML_FTP_URL_SYNTAX + * uri.c: added accepting ipV6 addresses, in accordance with + RFC's 2732 and 2373 (TODO: allow ipV4 within ipV6) + * gentest.py, testapi.c: fixed a few problems with the + testing of the nanoftp and nanohttp routines. + * include/libxml/xmlversion.h: minor change to fix a + warning on the docs generation + * regenerated the docs + +Sat Feb 12 09:07:11 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed xmlXIncludeParseFile to prevent + overwriting XML_COMPLETE_ATTRS when setting pctxt->loadsubset + (bug 166199) + * Makefile.am, python/tests/Makefile.am, xstc/Makefile.am: added + code to add $(top_builddir)/.libs to LD_LIBRARY_PATH whenever + PYTHONPATH is set, to assure new libxml2 routines are used. + +Fri Feb 11 22:20:41 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed problem when no initial "chunk" was + given to xmlCreatePushParser (bug 162613) + +Fri Feb 11 18:37:22 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * dict.c: fixed compilation warning + * parser.c: changed xmlWarningMsg so ctxt->errNo is not set + * xmllint.c: changed to return non-zero status if error + on xinclude processing + * xmlsave.c: minor deletion of a redundant condition statement + +Wed Feb 9 17:47:40 CET 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch to xmlSetNsProp from Mike Hommey + +Sun Feb 6 00:17:57 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c xmllint.c: fixed implementation for | + * test/pattern/conj.* result/pattern/conj: added a specific regression + test + +Sat Feb 5 18:36:56 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: first implementation for | support + +Sat Feb 5 14:58:46 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: fixed the namespaces support + * tree.c: fixed xmlGetNodePath when namespaces are used + * result/pattern/multiple result/pattern/namespaces + test/pattern/multiple.* test/pattern/namespaces.*: added + more regression tests + +Fri Feb 4 18:26:43 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed one internal function + * doc/Makefile.am doc/wiki.xsl: applied patch from Joel Reed + * testapi.c doc/libxml2-api.xml doc/libxml2-refs.xml: regenerated + +Fri Feb 4 00:25:43 CET 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: use the walker to test the patterns instead of + the normal reader + * pattern.c xmllint.c: bug fixes in the train including fixing the + stupid build break. + +Tue Feb 1 18:15:52 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: more bug fixes for the XPath streaming code. + +Mon Jan 31 17:59:24 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Integrated the streaming pattern from the + pattern module. Fixed some IDC code bugs. Changed + fallback for attribute declaration addition to work like for + element declarations. + +Mon Jan 31 01:27:22 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c xmllint.c: bugfixes around the streaming patterns + +Sun Jan 30 23:35:19 CET 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in result/pattern/simple + test/pattern/simple.*: added first test for the patterns + * pattern.c xmllint.c: a few fixes + +Sun Jan 30 19:27:23 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c include/libxml/pattern.h xmllint.c: added a + streaming pattern detector for a subset of XPath, should + help Kasimier for identity constraints + * python/generator.py: applied Stéphane Bidoul patch to find + paths without breaking. + +Fri Jan 28 18:53:40 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed an untested pointer dereference and a & vs && + +Fri Jan 28 18:37:18 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: implementation of xmlTextReaderReadString by + Bjorn Reese + +Fri Jan 28 16:51:47 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Corrected an ambigious symbol-space for + local attribute declarations. IFDEFed more IDC code to + surpress compiler warnings. + +Fri Jan 28 00:57:04 CET 2005 Daniel Veillard <daniel@veillard.com> + + * bakefile/Readme.txt bakefile/Bakefiles.bkgen bakefile/libxml2.bkl: + files for the Bakefile generator for Makefiles from Francesco + Montorsi + * win32/configure.js: fixes for Windows compilation with non-default + flags by Joel Reed + +Thu Jan 27 18:23:50 CET 2005 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed xmlCopyDoc to also copy the doc->URL as pointed + by Martijn Faassen + +Thu Jan 27 13:39:04 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h: + Added an initial skeleton for indentity-constraints. This is all + defined out, since not complete, plus it needs support from other + modules. + Added machanism to store element information for the + ancestor-or-self axis; this is needed for identity-constraints + and should be helpfull for a future streamable validation. + * include/libxml/xmlerror.h: Added an error code for + identity-constraints. + +Wed Jan 26 01:03:37 CET 2005 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: had to fix generation and rebuild. + * valid.c: the testapi found a bug in the last code of course ! + +Wed Jan 26 00:43:05 CET 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am testapi.c doc/Makefile.am: fixing the way testapi.c + is generated, fixes bug #161386 + * dict.c: fix a comment typo + * elfgcchack.h doc/*: regenerated + +Tue Jan 25 22:39:33 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: found and fixed 2 problems in the internal subset scanning + code affecting the push parser (and the reader), fixes #165126 + * test/intsubset2.xml result//intsubset2.xml*: added the test case + to the regression tests. + +Tue Jan 25 01:20:11 CET 2005 Daniel Veillard <daniel@veillard.com> + + * testdso.c xmlregexp.c: warning patches from Peter Breitenlohner + * include/libxml/valid.h valid.c parser.c: serious DTD parsing + speedups, start to deprecate 3 ElementDef related entry point + and replace them with better ones. + +Mon Jan 24 00:47:41 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: more hash dictionary interning changes + +Sun Jan 23 23:54:39 CET 2005 Daniel Veillard <daniel@veillard.com> + + * hash.c include/libxml/hash.h: added xmlHashCreateDict where + the hash reuses the dictionnary for internal strings + * entities.c valid.c parser.c: reuse that new API, leads to a decent + speedup when parsing for example DocBook documents. + +Sun Jan 23 21:14:20 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: small speedup in skipping blanks characters + * entities.c: interning the entities strings + +Sun Jan 23 18:35:00 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: boosting common commnent parsing code, it was really + slow. + * test/comment[3-5].xml result//comment[3-5].xml*: added sprecific + regression tests + +Sun Jan 23 01:00:09 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: small optimization back. + +Sat Jan 22 00:40:31 CET 2005 Daniel Veillard <daniel@veillard.com> + + * dict.c parser.c include/libxml/dict.h: a single lock version + mostly avoid the cost penalty of the lock in case of low + parallelism, so applying that version instead. + +Fri Jan 21 17:54:06 CET 2005 Daniel Veillard <daniel@veillard.com> + + * dict.c: patch from Gary Coady to fix a race in dict reference + counting in multithreaded apps. + +Fri Jan 21 16:08:21 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #164556 where non-fatal errors stopped + push parsing and xmlreader. + * Makefile.am: fixup + * test/errors/webdav.xml result/errors/webdav*: adding regression + test for this problem. + +Wed Jan 19 17:24:34 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Corrected targetNamespace in + xmlSchemaElementDump. Cosmetic changes to the dump output. + +Sun Jan 16 21:00:53 CET 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: preparing release of 2.6.17, + updated and rebuilt the docs + +Sun Jan 16 19:58:36 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: better fix for #151694 not killing c14n regression tests + * xmlschemastypes.c: fixing bug #157653 + +Sun Jan 16 19:01:06 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing bug #151694, line should always be set in the + elements. + +Sun Jan 16 01:04:18 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: trying to fix at least the message from + bug #158628 + * include/libxml/xmlsave.h xmlsave.c: added first xmlsave option + for format, c.f. bug #159997 + +Sat Jan 15 18:44:30 CET 2005 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: make __str__ call serialize() on nodes, c.f. + bug #157872 + +Sat Jan 15 18:18:07 CET 2005 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: applied patch from Dan McNichol for compilation on AIX + +Sat Jan 15 13:35:19 CET 2005 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed bug #157633 in relaxng choice optimization + * result/relaxng/choice0* test/relaxng/choice0*: added regression + tests about it. + * doc/*: rebuilt + * testdso.c: removed a warning due to a missing void in signature. + +Thu Jan 13 17:42:55 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * include/libxml/schemasInternals.h xmlschemas.c: + Exposed targetNamespace for simple/complex types, model groups, + attribute groups and notations (reported by Michael Hewarth + to the mailing list). Added targetNamespace to xmlSchemaType, + xmlSchemaAttributeGroup and xmlSchemaNotation. + Tiny cosmetic change to the content model error report output. + * result//all_*.err result//any3_0_0.err result//choice_*.err + result//list0_0_1.err result//list0_1_1.err: Adapted output + of regression tests. + +Thu Jan 13 13:20:51 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Put the fix of Daniel (from Tue Jan 11 14:41:47 CET) + back in, since I missed to update xmlschemas.c before doing + the previous commit. + +Thu Jan 13 12:59:25 CET 2005 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Integrated xmlRegExecErrInfo and xmlRegExecNextValues + from xmlregexp.c to report expected elements on content model errors. + * all_*.err any3_0_0.err choice_*.err list0_0_1.err list0_1_1.err: + Adapted output of regression tests. + +Thu Jan 13 12:24:09 CET 2005 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in xmlmodule.c: trying to work around + the compilation problem on HP-UX + +Wed Jan 12 22:03:33 CET 2005 Daniel Veillard <daniel@veillard.com> + + * pattern.c: fixed the fixed size array structure problem reported by + Patrick Streule + +Wed Jan 12 15:15:02 CET 2005 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h testapi.c doc/libxml2-api.xml doc/*: regenerated + the API description, rebuilt, improved navigation in documentation + a bit. + +Wed Jan 12 14:17:14 CET 2005 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlregexp.h xmlregexp.c: extended xmlRegExecErrInfo() + and xmlRegExecNextValues() to return error transition strings too, + and sink state detection and handling. + +Tue Jan 11 14:41:47 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed bug #163641 when the value passed for + an atomic list type is NULL. + +Tue Jan 11 10:14:33 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * Makefile.am configure.in: fixed dependency on python 2.3, + also small improvement for cygwin (bug 163273) + +Sun Jan 9 18:46:32 CET 2005 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: William noticed I forgot to add special + support for xmlmodules.c define + * xmlregexp.c include/libxml/xmlregexp.h: added terminal to + xmlRegExecErrInfo() API, adding new xmlRegExecNextValues() + entry point and refactored to use both code. + +Mon Jan 10 01:02:41 HKT 2006 William Brack <wbrack@mmm.com.hk> + + * doc/xml.html, doc/FAQ.html: added an FAQ under Developer for + setting up a "private" library (after some list posts about + people having trouble doing it) + +Sat Jan 8 23:04:10 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixing behaviour for xmlRegExecErrInfo in case of + rollback + +Fri Jan 7 14:54:51 CET 2005 Daniel Veillard <daniel@veillard.com> + + * TODO: small update + * xmlregexp.c: trying to add an API to get useful error informations + back from a failing regexp context. + +Thu Jan 6 17:35:41 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with xmlXPathErr when error number + subscript was out of range (bug 163055) + +Thu Jan 6 09:57:03 HKT 2005 William Brack <wbrack@mmm.com.hk> + + * uri.c: fixed problem with xmlURIEscape when query part was + empty (actually fixed xmlURIEscapeStr to return an empty + string rather than NULL for empty string input) (bug 163079) + +Tue Jan 4 17:08:45 PST 2005 Aleksey Sanin <aleksey@aleksey.com> + + * parser.c, parserInternal.c: fixed "col" calculation for + struct _xmlParserInput (based on patch from Rob Richards) + * include/libxml/xmlerror.h, error.c: propagated error column + number in the xmlError structure + +Tue Jan 4 22:47:22 CET 2005 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed namespace bug in push mode reported by + Rob Richards + * test/ns6 result//ns6*: added it to the regression tests + * xmlmodule.c testModule.c include/libxml/xmlmodule.h: + added an extra option argument to module opening and defined + a couple of flags to the API. + +Tue Jan 4 21:16:05 CET 2005 Daniel Veillard <daniel@veillard.com> + + * xmlmodule.c include/libxml/xmlmodule.h: applied patch from + Bjorn Reese, plus some cleanups + * elfgcchack.h doc/elfgcchack.xsl: fixed the stylesheet to + add the new header + * doc/* testapi.c: regenerated the API + +Tue Jan 4 18:47:19 CET 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: making DSO support an option + * xmlmodule.c xmlreader.c include/libxml/xmlmodule.h: code + and documentation cleanups + * elfgcchack.h testapi.c doc/*: regenerated the docs and + checks for new module + * test/valid/REC-xml-19980210.xml: fix a small change introduced + previously + +Tue Jan 4 16:07:52 CET 2005 Daniel Veillard <daniel@veillard.com> + + * Makefile.am config.h.in configure.in error.c libxml-2.0.pc.in + testModule.c testdso.c xml2-config.in xmllint.c xmlmodule.c + include/libxml/Makefile.am include/libxml/xmlerror.h + include/libxml/xmlmodule.h include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in: applied DSO support + patch 2 from Joel Reed + +Tue Jan 4 15:30:15 CET 2005 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied patch from Marcin Konicki for BeOS + +Mon Jan 3 13:57:21 PST 2005 Aleksey Sanin <aleksey@aleksey.com> + + * parser.c: added GetLineNumber and GetColumnNumber functions for xmlReader + +Sun Jan 2 17:51:18 HKT 2005 William Brack <wbrack@mmm.com.hk> + + Re-examined the problems of configuring a "minimal" library. + Synchronized the header files with the library code in order + to assure that all the various conditionals (LIBXML_xxxx_ENABLED) + were the same in both. Modified the API database content to more + accurately reflect the conditionals. Enhanced the generation + of that database. Although there was no substantial change to + any of the library code's logic, a large number of files were + modified to achieve the above, and the configuration script + was enhanced to do some automatic enabling of features (e.g. + --with-xinclude forces --with-xpath). Additionally, all the format + errors discovered by apibuild.py were corrected. + * configure.in: enhanced cross-checking of options + * doc/apibuild.py, doc/elfgcchack.xsl, doc/libxml2-refs.xml, + doc/libxml2-api.xml, gentest.py: changed the usage of the + <cond> element in module descriptions + * elfgcchack.h, testapi.c: regenerated with proper conditionals + * HTMLparser.c, SAX.c, globals.c, tree.c, xmlschemas.c, xpath.c, + testSAX.c: cleaned up conditionals + * include/libxml/[SAX.h, SAX2.h, debugXML.h, encoding.h, entities.h, + hash.h, parser.h, parserInternals.h, schemasInternals.h, tree.h, + valid.h, xlink.h, xmlIO.h, xmlautomata.h, xmlreader.h, xpath.h]: + synchronized the conditionals with the corresponding module code + * doc/examples/tree2.c, doc/examples/xpath1.c, doc/examples/xpath2.c: + added additional conditions required for compilation + * doc/*.html, doc/html/*.html: rebuilt the docs + +Sat Dec 25 18:10:02 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * parserInternals.c: fixed to skip (if necessary) the BOM for + encoding 'utf-16'. Completes the fix for bug #152286. + * tree.c, parser.c: minor warning cleanup, no change to logic + +Fri Dec 24 16:31:22 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * python/generator.py: added most required entires to + foreign encoding table, plus some additional logic to + assure only the 1st param uses the 't#' format. Fixes + bug #152286, but may still have some other UTF-16 problems. + +Thu Dec 23 23:44:08 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * Makefile.am, gentest.py: enhanced for enabling build in + a different directory. Added (optional) param to gentest.py + to specify the source directory (bug #155468) + * doc/Makefile.am: changed destination of NEWS from (top_srcdir) + to (top_builddir) (bug #155468) + * python/Makefile.am, python/generator.py: enhanced for enabling + build in a different directory(bug #155468). Added (optional) + param to generator.py to specify the source directory. Added + a new table of functions which have possible "foreign" encodings + (e.g. UTF16), and code to use python 't' format instead of + 'z' format (mostly solving bug #152286, but still need to + populate the table). + +Tue Dec 21 08:10:44 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/site.xsl, doc/xml.html, plus rebuilt all the html pages + Change reference to new site for Solaris binaries, fixing bug + 160598 + + +Mon Dec 20 08:02:57 PST 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: reset input->base within xmlStopParser + * xmlstring.c: removed call to xmlUTF8Strlen from within + xmlUTF8Strpos (Bill Moseley pointed out it was not + useful) + +Fri Dec 17 16:03:41 PST 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: changed xmlErrValidWarning to use ctxt->warning + instead of ctxt->error for its reports (bug #160662) + +Fri Dec 17 14:52:17 PST 2004 William Brack <wbrack@mmm.com.hk> + + * python/generator.py: modified to allow the ns and nsDefs + accessors to return None instead of error when no namespace + is present (bug #) + +Fri Dec 17 11:40:21 PST 2004 William Brack <wbrack@mmm.com.hk> + + * doc/Makefile.am: changed maintainer-clean dependency with + suggestion from Crispin Flowerday (bug #157634) + * debugXML.c: fixed crash when ATTRIBUTE or DOCUMENT nodes + were specified with debugDumpNode (bug #160621) + +Fri Dec 10 11:24:41 CET 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed ID deallocation problem based on patch from + Steve Shepard fixes bug #160893 + * xmlmemory.c: improving comment. + * testapi.c: new test for xmlDictExists() is generated. + +Wed Dec 1 22:35:37 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * dict.c, xpath.c, include/libxml/hash.h: fixed up some gcc warnings, + no change to logic. New macro XML_CAST_FPTR to circumvent gcc + warnings on function pointer <-> object pointer (a hack). + +Mon Nov 29 14:07:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed a memory leak on errors in some circumstances #159812 + +Fri Nov 26 23:20:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlIO.c: added a check within xmlOutputBufferWriteEscape to prevent + a dead loop on bad data (bug 159550) + +Fri Nov 26 13:09:04 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed strict/lax element wildcards: the children + of elements for which a declaration existed were still processed + by the wildcard mechanism (reported by philippe ventrillon to the + mailing list). + Changed the import and include machanism to share dictionaries. + +Fri Nov 26 11:44:36 CET 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c: make sure xmlCtxtReadFile and htmlCtxtReadFile + go through the catalog resolution. + * gentest.py testapi.c: fix a side effect wrning of the change + +Wed Nov 24 13:41:52 CET 2004 Daniel Veillard <daniel@veillard.com> + + * dict.c include/libxml/dict.h: added xmlDictExists() to the + dictionnary interface. + * xmlreader.c: applying xmlTextReaderHasAttributes fix for namespaces + from Rob Richards + +Wed Nov 17 13:54:37 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: tiny enhancement for content model error reports + (#157190, #143948). Removed abbreviations: CT, ST and WC + (#157190, reported by Frans Englich). + Initial: no report of local components. + * result/schemas/all* result/schemas/any3_0_0.err + result/schemas/choice* + result/schemas/cos-st-restricts-1-2-err_0_0.err + result/schemas/derivation-ok-extension-err_0_0.err + result/schemas/derivation-ok-extension_0_0.err + result/schemas/derivation-ok-restriction-2-1-1_0_0.err + result/schemas/derivation-ok-restriction-4-1-err_0_0.err + result/schemas/deter0_0_0.err result/schemas/extension1_0_2.err + result/schemas/facet-unionST-err1_0_0.err + result/schemas/hexbinary_0_1.err + result/schemas/list* result/schemas/restriction-attr1_0_0.err + result/schemas/vdv-first4_0_1.err result/schemas/vdv-first4_0_2.err: + Adapted output. + +Mon Nov 15 13:04:28 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Moved execution of xmlSchemaCheckDefaults to + xmlSchemaTypeFixup; this ensures facets of inherited types to be + checked prior to facets of derived types - which caused a seg + fault otherwise (bug #158216, reported by Frans Englich). + +Sun Nov 14 22:23:18 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * gentest.py, testapi.c: further enhancement, now all + compilation warnings have been fixed. + * xmlschemastypes.c: added NULL check for one function + +Fri Nov 12 23:58:14 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: trivial change (changed CHECK_CONTEXT to CHECK_CTXT + on a couple of lines) + * gentest.py, testapi.c: enhanced to reduce compilation warnings + +Fri Nov 12 16:12:48 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Un-commented a TODO in xmlSchemaParseElement. + +Fri Nov 12 14:55:36 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Correct symbol space for 'all' and 'choice'. + * xmlschemastypes.c include/xmlschemastypes.h: Added 'replace' + normalization for 'normalizedString'. + Added xmlSchemaWhiteSpaceReplace to the API. + +Thu Nov 11 21:43:02 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: forgot a $(srcdir) + * encoding.c: stupid error wrong name #157976 + +Wed Nov 10 15:35:25 CET 2004 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in doc/*: preparing release of libxml2-2.6.16 + +Wed Nov 10 12:55:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml2class.txt + python/libxml_wrap.h python/types.c: Applied patch from Brent + Hendricks adding support for late DTD validation. + * python/tests/Makefile.am python/tests/dtdvalid.py + python/tests/test.dtd: integrated the provided regression test + +Tue nov 9 19:24:31 CET 2004 Dodji Seketeli <dodji@seketeli.org> + + * configure.in: detect when struct sockaddr_storage + has the __ss_family member instead of ss_family and + behave accordingly. We now can use ipv6 on aix. + +Tue Nov 9 17:15:46 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am gentest.py testapi.c: integrated in "make tests" + added -q option, and more conditional features fixes + * catalog.c debugXML.c parser.c testThreads.c xmllint.c + xmlschemastypes.c xmlwriter.cinclude/libxml/catalog.h + include/libxml/debugXML.h: various compilation and conditional + cleanups. + * doc/*: regenerated + +Tue Nov 9 15:59:50 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: better handling of conditional features + * HTMLparser.c SAX2.c parserInternals.c xmlwriter.c: more testing + on parser contexts closed leaks, error messages + +Tue Nov 9 10:21:37 GMT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem concerning XPath context corruption + during function argument evaluation (bug 157652) + +Mon Nov 8 18:54:52 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testapi.c: more types. + * parserInternals.c xpath.c: more fixes + +Mon Nov 8 18:16:43 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: better parser options coverage + * SAX2.c xpath.c: more cleanups. + +Tue Nov 9 01:50:08 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testapi.c: trying to fix some optional support brokenness + +Mon Nov 8 17:25:27 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more coverage + * debugXML.c parser.c xmlregexp.c xpath.c: more fixes + +Mon Nov 8 15:02:39 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more coverage + * SAX2.c parser.c parserInternals.c: more fixes + +Mon Nov 8 12:55:16 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c testapi.c xmlIO.c xmlstring.c: more fixes. + +Mon Nov 8 11:24:57 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more types, more coverage + * parser.c parserInternals.c relaxng.c valid.c xmlIO.c + xmlschemastypes.c: more problems fixed + +Mon Nov 8 10:24:28 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * gentest.py: fixed test file corruption problem + +Sun Nov 7 13:18:05 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: fixed typos and avoid Catalogs verbosity + +Sat Nov 6 23:25:16 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testapi.c: augmented the number of types + +Sat Nov 6 20:24:07 CET 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c tree.c xmlreader.c xmlwriter.c: a number of new + bug fixes and documentation updates. + +Sat Nov 6 15:50:11 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: augmented type autogeneration for enums + * xpath.c include/libxml/xpath.h: removed direct error reporting. + +Sat Nov 6 14:27:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fixed a regression in iconv support. + +Fri Nov 5 18:19:23 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: autogenerate a minimal NULL value sequence + for unknown pointer types + * HTMLparser.c SAX2.c chvalid.c encoding.c entities.c parser.c + parserInternals.c relaxng.c valid.c xmlIO.c xmlreader.c + xmlsave.c xmlschemas.c xmlschemastypes.c xmlstring.c xpath.c + xpointer.c: This uncovered an impressive amount of entry points + not checking for NULL pointers when they ought to, closing all + the open gaps. + +Fri Nov 5 16:26:28 UTC 2004 William Brack <wbrack@mmm.com.hk> + + * catalog.c: fixed problem with NULL entry (bug 157407) + * xpath.c: fixed a couple of warnings (no change to logic) + +Fri Nov 5 15:30:43 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more coverage + * xmlunicode.c: one fix + +Fri Nov 5 23:15:51 CET 2004 Daniel Veillard <daniel@veillard.com> + + * entities.c: fixed a compilation problem on a recent change + +Fri Nov 5 12:50:09 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more coverage + * nanoftp.c tree.c: more fixes + +Fri Nov 5 11:02:28 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: fixed the way the generator works, + extended the testing, especially with more real trees and nodes. + * HTMLtree.c tree.c valid.c xinclude.c xmlIO.c xmlsave.c: a bunch + of real problems found and fixed. + * entities.c: fix error reporting to go through the new handlers + +Thu Nov 4 18:44:56 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: dohh ... stupid change killing xmlParseDoc() + +Thu Nov 4 18:32:22 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: changing the way the .c is generated, + extending the tests coverage + * include/libxml/nanoftp.h nanoftp.c elfgcchack.h doc/*: fixing some + function signatures, regenerating stuff + * SAX2.c parser.c xmlIO.c: another set of bug fixes and API hardening + +Thu Nov 4 13:32:19 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: extending the tests coverage + +Thu Nov 4 11:52:28 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: gentest.py was missing from the EXTRA_DIST + +Thu Nov 4 11:48:47 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: extending the tests coverage + * HTMLtree.c tree.c xmlsave.c xpointer.c: more fixes and cleanups + +Thu Nov 4 00:25:36 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more fixes and extending the tests coverage + * nanoftp.c xmlIO.c: more fixes and hardening + +Wed Nov 3 20:16:24 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more fixes and extending the tests coverage + * valid.c: bunch of cleanups and 2 leaks removed + +Wed Nov 3 18:06:44 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more fixes and extending the tests coverage + * list.c tree.c: more fixes and hardening + +Wed Nov 3 15:19:22 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more fixes and extending the tests coverage + * relaxng.c include/libxml/relaxng.h: adding a type init interface + * include/libxml/xmlerror.h parser.c xmlreader.c xmlwriter.c: more + cleanups and bug fixes raised by the regression tests + +Wed Nov 3 12:49:30 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more fixes and extending the tests coverage + * xmlwriter.c list.c: more hardeing of APIs + * doc/apibuild.py: skip testapi.c when scanning the C files. + +Tue Nov 2 23:09:06 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more testing and coverage + * elfgcchack.h xmlstring.c include/libxml/xmlstring.h: more cleanups + * doc/*: rebuilt + +Tue Nov 2 19:44:32 CET 2004 Daniel Veillard <daniel@veillard.com> + + * gentest.py testapi.c: more developments on the API testing + * HTMLparser.c tree.c: more cleanups + * doc/*: rebuilt + +Tue Nov 2 15:49:34 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c include/libxml/xmlmemory.h: adding xmlMemBlocks() + * Makefile.am gentest.py testapi.c: work on generator of an + automatic API regression test tool. + * SAX2.c nanoftp.c parser.c parserInternals.c tree.c xmlIO.c + xmlstring.c: various API hardeing changes as a result of running + teh first set of automatic API regression tests. + * test/slashdot16.xml: apparently missing from CVS, commited it + +Mon Nov 1 15:54:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed an UTF-8 parsing bug reported by Markus Bertheau + on #fedora-devel + +Sun Oct 31 22:03:38 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a bug reported by Petr Pajas on the list and + affecting XML::Libxml + +Sun Oct 31 16:33:54 CET 2004 Daniel Veillard <daniel@veillard.com> + + * encoding.c doc/examples/testWriter.c: Fixed bug #153937, making + sure the conversion functions return the number of byte written. + Had to fix one of the examples. + +Fri Oct 29 14:16:56 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.1 doc/xmllint.xml: indicate - means stdin closing #156626 + +Fri Oct 29 14:03:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: register xmlSchemaSetValidErrors, patch from + Brent Hendricks in the mailing-list + * include/libxml/valid.h HTMLparser.c SAX2.c valid.c + parserInternals.c: fix #156626 and more generally how to find out + if a validation contect is part of a parsing context or not. This + can probably be improved to make 100% sure that vctxt->userData + is the parser context too. It's a bit hairy because we can't + change the xmlValidCtxt structure without breaking the ABI since + this change xmlParserCtxt information indexes. + +Wed Oct 27 19:26:20 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * ChangeLog NEWS configure.in doc/*: preparing release 2.6.15 + * debugXML.c nanoftp.c xmlschemas.c xmlschemastypes.c: cleanups + +Wed Oct 27 09:31:24 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * uri.c: fixed a stupid mistake in xmlBuildRelativeURI + (bug 156527) + +Wed Oct 27 11:44:35 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c: second part of the security fix for + xmlNanoFTPConnect() and xmlNanoHTTPConnectHost(). + +Tue Oct 26 23:57:02 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: applied fixes for a couple of potential security problems + * tree.c valid.c xmllint.c: more fixes on the string interning checks + +Tue Oct 26 18:09:59 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/xmlerror.h: added checking for names + values and dictionnaries generates a tons of errors + * SAX2.ccatalog.c parser.c relaxng.c tree.c xinclude.c xmlwriter.c + include/libxml/tree.h: fixing the errors in the regression tests + +Mon Oct 25 16:04:22 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: modified the handling of _private for entity + expansion (bug 155816) + +Mon Oct 25 17:11:37 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the leak reported by Volker Roth on the list + * test/ent10 result//ent10*: added a specific test for the problem + +Sat Oct 23 11:07:41 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: unlinked the internal subset within xmlValidateDtd + (bug 141827) + * configure.in: added -Wall to developer's flags + * doc/examples/reader4.res: added to CVS + +Fri Oct 22 16:36:50 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: added support for HTML PIs #156087 + * test/HTML/python.html result/HTML/python.html*: added specific tests + +Fri Oct 22 15:20:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * threads.c: fixed nasty bug #156087 + +Fri Oct 22 21:04:20 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: fixed a problem occuring only in x86_64 when + very large error messages are raised to the Python handlers. + +Thu Oct 21 18:03:21 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed a memory bug + * doc/examples/reader4.c doc/examples/*: added test from Graham Bennett + and regenerated the directory + +Tue Oct 19 11:06:39 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlreader.h xmlreader.c: applied patch from + Graham Bennett adding 4 convenience functions to the reader API. + +Fri Oct 15 11:22:48 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * debugXML.c: excluded a few nodes (with no content) from the + string check routine. + +Fri Oct 15 10:48:30 EDT 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/xmlerror.h: added UTF-8 string checking, + raise a problem, need debug + +Wed Oct 13 02:17:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: applied patch from Thomas Fitzsimmons fixing + #155240 building outside the source tree. but make tests fails. + +Mon Oct 11 16:26:51 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/xmlerror.h: added namespace checking + +Sat Oct 9 22:36:21 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: some framework preparation to add namespace checkings + +Thu Oct 7 15:12:58 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/debugXML.h include/libxml/xmlerror.h: + adding the tree debug mode + * parser.c relaxng.c tree.c xpath.c: fixing various problems reported + by the debug mode. + * SAX2.c: another tree fix from Rob Richards + +Wed Oct 6 10:50:03 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * catalog.c: small change to last fix, to get xml:base right + +Wed Oct 6 09:33:51 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * catalog.c: added code to handle <group>, including dumping + to output (bug 151924). + * xmlcatalog.c, xmlstring.c, parser.c: minor compiler warning + cleanup (no change to logic) + +Mon Oct 4 16:09:07 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in debugXML.c include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in: revamped the XML debugging + module and prepare for a new checking mode + +Mon Oct 4 13:53:24 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Malcolm Tredinnick fixing bug #152426 + +Mon Oct 4 12:26:28 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/tests/outbuf.py: + applied patch from Malcolm Tredinnick fixing bug #154294 + related to saving to python file objects. + +Sat Oct 2 21:08:51 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * tree.c: changed xmlHasNsProp to properly handle a request for + the default namespace (bug 153557) + +Sat Oct 2 18:18:27 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed problem with dictionary handling within + xmlParseInNodeContext (bug 153175) + +Sat Oct 2 15:46:37 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * check-relaxng-test-suite.py, check-relaxng-test-suite2.py, + check-xinclude-test-suite.py, check-xml-test-suite.py, + check-xsddata-test-suite.py, doc/examples/index.py: changed + changed sys.path setting from 'append' to 'insert' (patch + supplied by Malcolm Tredinnick) (bug 153716) + +Sat Oct 2 15:03:14 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * include/libxml/parserInternals.h: added two new macros + IS_ASCII_LETTER and IS_ASCII_DIGIT used with (html) + parsing and xpath for testing data not necessarily + unicode. + * HTMLparser.c, xpath.c: changed use of IS_LETTER_CH and + IS_DIGIT_CH macros to ascii versions (bug 153936). + +Fri Oct 1 20:37:25 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * error.c: added some coding to attempt to display which file + contains an error when using XInclude (bug 152623) + +Thu Sep 30 11:19:17 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in: stupid cut'n paste bug in xmllint detection + +Wed Sep 29 17:47:56 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/*: releasing 2.6.14, rebuilding the docs + +Wed Sep 29 15:00:11 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlerror.h include/libxml/xmlschemas.h + include/libxml/schemasInternals.h: Parsing of <complexContent> + - handle attribute 'mixed', catch illegal attributes. + Parsing of <complexType> - handle attributes 'abstract', + 'final' and 'block', catch illegal attributes. + Validation of complex types - handle abstract types. + Added handling of default/fixed attributes and element values. + Per validation option attribute nodes/text nodes are created + on the instance. + Added the corresponding constraints for fixed/default. + Added xmlSchemaSetValidOptions, xmlSchemaGetValidOptions + to the external API. + Extended element declaration constraints. + Got rid of perseverative creation of temporery validation/parser + contexts. + Added handling of xsi:schemaLocation and + xsi:noNamespaceSchemaLocation. + Fixed xsi:type component resolution if using non-prefixed + QNames. + * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: + Enabled namespace awareness of the content model if using the + model group "all". + * test/schemas/bug152470_1.xsd: Removed an "abstract" attribute, + which broke the test. + * xstc/xstc.py: Workaround to accomodate case insensitive + test definitions in ms-test.def.xml (was missing in a previous + commit). + +Wed Sep 29 11:03:10 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/drv_libxml2.py: another patch from Malcolm Tredinnick + adding option not to load dtd from the drv_libxml2.py module + #134633 + +Tue Sep 28 14:30:22 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * acconfig.h config.h.in configure.in xmlIO.c xmlregexp.c xmlschemas.c + xmlschemastypes.c: another patch from Malcolm Tredinnick fixing + warning generated by the Nonstop Kernel Open System Services + compiler #151710 + +Tue Sep 28 13:07:37 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: applied patch from Malcolm Tredinnick fixing + python exception hierarchy #139824 + +Sun Sep 26 16:40:24 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c TODO: applied patch from Malcolm Tredinnick fixing errata + E20 concerning NMTOKENS and co. validation #153722 + * result/VC/AttributeNmtokens test/VC/AttributeNmtokens + test/VCM/AttributeNmtokens.xml: also added tests from Malcolm + +Sun Sep 26 16:24:44 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xstc/xstc.py: applied patch from Malcolm Tredinnick fixing space/tabs + #153713 + * xpath.c: fixed a realloc potential problem + +Fri Sep 24 16:14:12 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: fixed make valgrind xstc + +Thu Sep 23 18:23:46 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: fixing an out of bound adressing issue + +Thu Sep 23 15:14:12 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c relaxng.c xmlschemas.c: more memory related + code cleanups. + +Thu Sep 23 01:04:30 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a bunch of errors when realloc failed. + +Wed Sep 22 23:56:05 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * threads.c uri.c: couple of memory fixes from Mark Vakoc reported + by Purify on Windows. + +Mon Sep 20 22:01:47 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added --timing --copy timing for the copy + * vms/build_libxml.com: applied patch from Craig Berry + to build with recent releases + +Fri Sep 17 21:25:33 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c, include/libxml/nanohttp.h: added the routine + xmlNanoHTTPContentLength to the external API (bug151968). + * parser.c: fixed unnecessary internal error message (bug152060); + also changed call to strncmp over to xmlStrncmp. + * encoding.c: fixed compilation warning (bug152307). + * tree.c: fixed segfault in xmlCopyPropList (bug152368); fixed + a couple of compilation warnings. + * HTMLtree.c, debugXML.c, xmlmemory.c: fixed a few compilation + warnings; no change to logic. + +Fri Sep 17 10:40:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: removed some extern before function code reported by + Kjartan Maraas on IRC + * legacy.c: fixed compiling when configuring out the HTML parser + * Makefile.am: added a declaration for CVS_EXTRA_DIST + * HTMLparser.c: beginning of an attempt at cleaning up the construction + of the HTML parser data structures, current data generate a huge + amount of ELF relocations at loading time. + +Fri Sep 17 10:36:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * ChangeLog: applied fix from Stepan Kasal to fix duplication + in the change log and cleanup of space/tabs issues. + +Thu Sep 16 13:24:27 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h + test/schemas/bug152470_1.* result/schemas/bug152470_1_1*: + Simpified attribute wildcard creation and assignment to get rid + of memory leaks. + Restructured the validation process. + Restructured and expanded parsing of <attributeGroup>. + Added initial handing of xsi:type. + Advanced handling of xsi:nil (should work now for simple types). + Added construction of schemata using xsi:schemaLocation and + xsi:noNamespaceSchemaLocation; this is not enabled, since + no corresponding API exists yet. + Moved the content model to complex type components. + Resolution of types for attributes will look for simple types + only (incl. all the built-in simple types). + Extended parsing of 'anyAttribute'. + Fixed content-type type for complex types if derived from + 'anyType' using the short-hand form (see bug # 152470, + submitted by Thilo Jeremias). + * include/libxml/xmlschematypes.h: Cleaned up some comments. + * xstc/xstc.py: Workaround to accomodate case insensitive + test definitions in ms-test.def.xml. + * result/schemas/deter0_0_0.err result/schemas/ns0_0_2.err + result/schemas/ns0_1_2.err: Adapted. + +Sat Sep 11 09:04:22 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlwriter.c: changed char array initialisation to avoid a + complaint from some compiler(s) (bug 152308) + +Thu Sep 9 07:22:11 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * encoding.c: applied fixes for the UTF8ToISO8859x transcoding + routine suggested by Mark Itzcovitz + +Wed Sep 8 22:50:27 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c xmlsave.c: fixed 2 problems raised by #152140, one + which is that notation not in the internal subset should + not be saved, and the second more nasty on an error saving + NOTATIONs, if there is a proof that nobody uses notations ! + +Wed Sep 8 11:04:27 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/xmlschemas.h: Added the function + xmlSchemaValidateOneElement to the XML Schema validation API, + as proposed by Jeffrey Fink - see bug # 152073. + +Tue Sep 7 11:10:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/Makefile.am xstc/Makefile.am: some cleanup + checking for xmllint and xsltproc in configure.in, fixed + make dist w.r.t. the new xstc subdir. + * doc/*: rebuilt + +Mon Sep 6 16:42:59 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/xstc.py: Changed to finally validate instance documents. + +Mon Sep 6 16:04:01 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am Makefile.am: integrated to "make valgrind", + heavy ... weight 250MB of VM ! + +Mon Sep 6 14:54:39 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xstc/Makefile.am xstc/xstc-to-python.xsl xstc/xstc.py Makefile.am: + more cleanup in integrating the xstc testsuite + +Mon Sep 6 13:56:28 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in xstc/.cvsignore xstc/Makefile.am: + starting to integrate the xstc suite in the normal regression + tests + +Mon Sep 6 13:14:11 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/sun-test-def.xml: The "tsDir" attribute was not + set correctly. + +Mon Sep 6 11:52:50 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * check-xinclude-test-suite.py: when output and expected do not match + exactly run diff to put the differences in the log c.f. #148691 + +Mon Sep 6 11:17:35 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xstc/xstc-to-python.xslt xstc/ms-test-def.xml xstc/nist-test-def.xml + xstc/sun-test-def.xml: Initial release of generation files to + create python test scripts, which will run the W3C XML Schema Test + Collection. The ms-test-def.xml and sun-test-def.xml files + were extracted from the online HTML XSTC results [1], since they did + not exist for the SUN tests, and only partially did exist for the + MS tests. The NIST definition file was created by concatenation + of the existing definition files for each single datatype. + The stylesheet "xstc-to-python.xslt" should be run against the + definition files to produce the python scripts. + [1] "http://www.w3.org/XML/2001/05/xmlschema-test-collection/ + results-master.html" + +Fri Sep 3 20:29:59 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: Fixed a seg fault in xmlGetQNameProp: + a format argument was missing. + Fixed wrong assignment of the owner of a wildcard in + xmlSchemaBuildAttributeValidation (in the shorthandform of + <complexType>; this caused a seg fault, due to a double-free + of the wildcard. + Added a check for circular attribute group references. + Added a check for circular model group definition references. + Fixed a dublicate xmlParserErrors enum value - see bug #151738. + +Fri Sep 3 10:08:13 PDT 2004 William Brack <wbrack@mmmm.com.hk> + + * xmlstring.c: modified comments on xmlGetUTF8Char in + response to bug 151760 (no change to logic) + +Tue Aug 31 09:46:18 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlstring.c: fixed error reported on the list caused by + my last change + +Tue Aug 31 15:41:52 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in doc/*: release of libxml2-2.6.13 + +Tue Aug 31 14:14:30 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fixing #151456, an encoding error could generate + a serialization loop. + +Tue Aug 31 11:34:04 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: also produce a tar ball with just the sources + * xmllint.c: added --path option and --load-trace options to + xmllint, RFE #147740 based on xsltproc versions + * doc/xmllint.* doc/*: updated the man page and rebuilt + +Tue Aug 31 10:37:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: "" is a valid hexbinary string dixit xmlschema-dev + * result/schemas/hexbinary_0_1.err test/schemas/hexbinary_1.xml: + update the test. + * test/ns5 result//ns5*: added a test for the namespace bug fixed + in previous commit. + * Makefile.am: added a message in the regression tests + +Mon Aug 30 23:36:21 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * SAX2.c: fixed bug introduced during OOM fixup causing problems + with default namespace when a named prefix with the same href + was present (reported on the mailing list by Karl Eichwalder. + * xmlstring.c: modified xmlCheckUTF8 with suggested code from + Julius Mittenzwei. + * dict.c: added a typecast to try to avoid problem reported by + Pascal Rodes. + +Mon Aug 30 12:45:46 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: Fixed a bug in xmlSchemasCheckFacet, which did + not create a computed value on a facet and thus crashed during + validation of instances. + Expanded validity checks for min/maxOccurs attributes. + Expanded validity checks for the value of the attribute "form". + +Fri Aug 27 18:32:24 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xmlstring.c: fixed a problem with xmlCheckUTF8 reported on the + mailing list by Julius Mittenzwei + +Fri Aug 27 00:13:39 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: added BuildRequires: zlib-devel, fixes + Red Hat bug #124942 + +Thu Aug 26 12:27:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: remove a warning on Solaris + * xmlschemastype.c: fix a crashing bug #151111 + +Wed Aug 25 22:20:18 CEST 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * test/schemas/import-bad-1_0.imp: Added missing test file. + * xmlschemas.c include/libxml/xmlerror.h include/libxml/xmlschemas.h: + Substituted the obsolete xmlSchemaValidError(s) for xmlParserErrors + - see #150840. + Changed the import of schemas to allow failure of location + of a resource to be imported. + * result/schemas/all_* result/schemas/any3_0_0.err + result/schemas/choice_* result/schemas/import1_0_0.err + result/schemas/list0_0_1.err result/schemas/list0_1_0.err + result/schemas/list0_1_1.err result/schemas/ns0_0_2.err + result/schemas/ns0_1_2.err: Adapted regression test results. + +Tue Aug 24 20:49:15 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml, xmltutorial.pdf, *.html + fix Xpath memory leak (thanks to sKaBoy and William Brack) + +Tue Aug 24 21:10:59 CEST 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * parser.c: fixed path problem in DTD loading reported by + Sameer Abhinkar + +Tue Aug 24 16:40:51 CEST 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/configure.js: added support for version extra + * win32/Makefile.*: upgraded to zlib 1.2.1 + +Mon Aug 23 14:33:54 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in: removing -O -g from default gcc flags #150828 + +Sun Aug 22 16:26:46 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* NEWS: preparing 2.6.12 release, updated and + and rebuilt the docs. + +Sun Aug 22 16:07:20 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: fix a problem on last commit + +Sun Aug 22 15:16:53 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c xpath.c include/libxml/xpath.h + include/libxml/xpathInternals.h python/libxml.c + python/libxml_wrap.h: trying to remove some warning when compiling + on Fedora Core 3 and 64bits + +Sat Aug 21 0:035:10 CET 2004 Kasimier Buchcik <libxml2-cvs@cazic.net> + + * xmlschemas.c: modified parsing of <list>, <union>, <restriction>, + <sequence>, <choice>, <include>, <import>. + Fixed schema defaults (elementFormDefault, etc.) for included + schemas. + Fixed a bug which reported attributes as invalid on + elements declarations with the built-in type 'anyType'. + Added "lax" validation of the content of elements of type + 'anyType'. + Fixed: element declarations with the same name were treated + as duplicate if located in the subtree of <choice> -> <sequence>. + (This was bug 150623, submitted by Roland Lezuo) + Fixed cleanup of error codes in xmlSchemaValidateDoc as proposed + by Igor Kapitanker. (This was bug 150647, submitted by Igor + Kapitanker) + * xmlschemastypes.c: Changed the type of anyType to + XML_SCHEMAS_ANYTYPE. + * include/libxml/xmlerror.h: Added schema parser errors. + * result/schemas/bug145246_0_0* + result/schemas/extension1_0_2.err: Changed test results. + * result/schemas/ct-sc-nobase_0_0* + result/schemas/facet-whiteSpace_0_0* + result/schemas/import1_0_0* result/schemas/import2_0_0* + result/schemas/include2_0_0* result/schemas/include3_0_0* + result/schemas/restriction-attr1_0_0* + result/schemas/seq-dubl-elem1_0_0* + result/schemas/xsd-list-itemType_0_0*: Added new rest results. + test/schemas/bug145246.xsd.imp test/schemas/ct-sc-nobase_0* + test/schemas/facet-whiteSpace_0* test/schemas/import1_0* + test/schemas/import2_0* test/schemas/include2_0* + test/schemas/include3_0* test/schemas/restriction-attr1_0* + test/schemas/seq-dubl-elem1_0* test/schemas/xml.xsd + test/schemas/xsd-list-itemType_0*: Added new tests and missing + files. + +Fri Aug 20 18:51:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in: a bit of cleanup and a extra variable for + CVS dist + +Thu Aug 19 07:44:07 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml, xmllint.1, xmllint.html: + Edit and rebuild the man pages with Daniel's C14 update + +Wed Aug 18 19:15:27 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed missing line numbers on entity as reported + on the list by Steve Cheng + +Wed Aug 18 14:04:31 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * configure.in globals.c include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in: added some code to + include the CVS ChangeLog version in the xmlParserVersion + string (printed by xmllint with --version) + +Wed Aug 18 11:14:06 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/xmlschemas.h python/generator.py + python/libxml.c python/libxml_wrap.h python/types.c + python/tests/schema.py python/tests/Makefile.am: Applied patch + from Torkel Lyng to add Schemas support to the Python bindings + and extend the schemas error API, registered a new test. + * doc/* elfgcchack.h: rebuilt to regenerate the bindings + +Mon Aug 16 14:36:25 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: added help for new set shell command + * xinclude.c xmllint.c xmlreader.c include/libxml/parser.h: + added parser option to not generate XInclude start/end nodes, + added a specific option to xmllint to test it fixes #130769 + * Makefile.am: regression test the new feature + * doc/xmllint.1 doc/xmllint.xml: updated man page to document option. + +Mon Aug 16 02:42:30 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: small typo pointed out by Mike Hommey + * doc/xmllint.xml, xmllint.html, xmllint.1: slightly improved + the --c14n description, c.f. #144675 . + * nanohttp.c nanoftp.c: applied a first simple patch from + Mike Hommey for $no_proxy, c.f. #133470 + * parserInternals.c include/libxml/parserInternals.h + include/libxml/xmlerror.h: cleanup to avoid 'error' identifier + in includes #137414 + * parser.c SAX2.c debugXML.c include/libxml/parser.h: + first version of the inplementation of parsing within + the context of a node in the tree #142359, new function + xmlParseInNodeContext(), added support at the xmllint --shell + level as the "set" function + * test/scripts/set* result/scripts/* Makefile.am: extended + the script based regression tests to instrument the new function. + +Sat Aug 14 18:53:08 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml, xmllint.html, xmllint.1: + add c14n to man page (man, it's hard to keep up with + Daniel!) + +Sat Aug 14 18:45:38 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml, xmllint.html, xmllint.1: + add pattern, walker, maxmem, output and xmlout to man page + fixes #144675 + +Sun Aug 15 00:41:12 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added a --c14n option to canonicalize the output + should close the RFE #143226 + +Sat Aug 14 23:50:10 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: Dodji pointed out a bug in xmlGetNodePath() + * xmlcatalog.c: applied patch from Albert Chin to add a + --no-super-update option to xmlcatalog see #145461 + and another patch also from Albert Chin to not crash + on -sgml --del without args see #145462 + * Makefile.am: applied another patch from Albert Chin to + fix a problem with diff on Solaris #145511 + * xmlstring.c: fix xmlCheckUTF8() according to the suggestion + in bug #148115 + * python/libxml.py: apply fix from Marc-Antoine Parent about + the errors in libxml(2).py on the node wrapper #135547 + +Sat Aug 14 13:18:57 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: added a dumb rule to able to compile tst.c + when people submit a sample test program + * xmlschemas.c: applied small patch from Eric Haszlakiewicz + to document xmlSchemasSetValidErrors() limitations, #141827 + * error.c: Add information in generic and structured error + setter functions that this need to be done per thread #144308 + * xmlsave.c: fixed bug whith missing NOTATION(s) serialization + bug #144162 + * doc/xmllint.xml: typo fix #144840 + +Tue Aug 10 07:19:31 PDT 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in xmlregexp.c xmlschemas.c xmlschemastypes.c + include/libxml/schemasInternals.h include/libxml/xmlerror.h + include/libxml/xmlschemastypes.h: applied Schemas patches + from Kasimier Buchcik + * test/ result/ bug141333* annot-err* any[1-4]* bug145246* + element-err* element-minmax-err* include1* restrict-CT-attr-ref*: + lot of new tests for things fixed by the patch + +Fri Aug 6 09:22:34 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: fixed my mis-handling of External ID on last + change. + +Wed Aug 4 23:40:21 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: changed the parsing of a document's DTD to use + the proper base path (bug 144366) + +Wed Aug 4 16:58:08 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am config.h.in configure.in python/Makefile.am: + applied a patch from Gerrit P. Haase to get python bindings + on Cygwin + +Tue Aug 3 15:08:22 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * include/libxml/valid.h: elaborated on description of + xmlValidityWarningFunc and xmlValidityErrorFunc (bug + 144760) + * xmlIO.c, xmlschemastypes.c, include/libxml/schemasinternals.h: + minor fixes to comments for doc rebuilding errors. + * doc/*.html: rebuilt the docs + +Tue Aug 3 23:59:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/ChangeLog.xsl doc/downloads.html doc/xml.html doc/*: + fixes documentation glitches raised by Oliver Stoeneberg + +Tue Aug 3 09:42:31 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * tree.c: fixed problem with memory leak on text nodes in DTD + (bug 148965) with patch provided by Darrell Kindred + +Tue Aug 3 08:14:44 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c: fixed initialisation problem for htmlReadMemory + (bug 149041) + +Sat Jul 31 11:01:33 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * doc/buildDocBookCatalog: enhanced per bug 119876. Further + info posted to the mailing list. + +Sat Jul 31 09:12:44 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * SAX2.c, encoding.c, error.c, parser.c, tree.c, uri.c, xmlIO.c, + xmlreader.c, include/libxml/tree.h: many further little changes + for OOM problems. Now seems to be getting closer to "ok". + * testOOM.c: added code to intercept more errors, found more + problems with library. Changed method of flagging / counting + errors intercepted. + +Fri Jul 30 13:57:55 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied a couple of patch one from Oliver Stoeneberg + and another one from Rob Richards fixing #148448 + +Thu Jul 29 13:20:28 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: 1 line patch, apparently htmlNewDoc() was not + setting doc->charset. + +Thu Jul 29 00:05:58 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * SAX2.c, tree.c, uri.c, xmlIO.c, xmlreader.c: further + fixes for out of memory condition, mostly from Olivier + Andrieu. + * testOOM.c: some further improvement by Olivier, with + a further small enhancement for easier debugging. + +Tue Jul 27 00:34:07 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * SAX2.c, error.c, parser.c, tree.c, xmlreader.c: + implemented patches supplied by Olivier Andrieu + (bug 148588), plus made some further enhancements, to + correct some problems with out of memory conditions. + * testOOM.c: improved with patches from Olivier Andrieu + +Mon Jul 26 11:03:18 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * tree.c: put in patch for Windows buffer re-allocation + submitted by Steve Hay (bug 146697) + +Sun Jul 25 17:18:39 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: added some code to check, when an include is + done, whether the requested URL gets mapped to some other + location (e.g. with a catalog entry) and, if so, take care + of the xml:base properly (bug 146988) + +Sun Jul 25 14:02:24 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * error.c: fixed to assure user data param is set correctly + when user structured error handler is called (bug 144823) + +Thu Jul 22 10:14:48 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlreader.c: fixed problem with reader state after + processing attributes (bug 147993) + +Wed Jul 21 17:04:27 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * configure.in, Makefile.am: put in an auto* check for the + path to perl (if it exists), and modified make Timingtests + to use that path instead of just executing the dbgenattr.pl + script (bug 148056) + +Fri Jul 16 18:36:33 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * python/generator.py: added a check on the argument for some + classes (e.g. xmlDoc and xmlNode) to prevent a segfault (as + reported on the list). Further enhancement should be done + to auto-create the appropriate object. + * python/libxml.c: minor fix for a warning message; added a + routine, currently not used, to report the description of a + PyCObject. + * python/libxml2class.txt: regenerated + +Fri Jul 16 11:01:40 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c test/catalogs/white* result/catalogs/white*: + applied patches from Peter Breitenlohner to fix handling + of white space normalization in public ids and add tests + +Tue Jul 13 17:24:13 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: applied a small fix from Steve Hay + +Tue Jul 13 23:02:19 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: Added code to in PREDICATE/FILTER handling to reset + the xpath context document pointer (part of fix to libxslt + bug 147445) + +Tue Jul 13 00:14:08 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * python/libxml.py: ran 'expand' on the file to get rid of mixture + of tabs and spaces (bug 147424) + +Sun Jul 11 22:38:29 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * python/drv_libxml.py: added an encoding "special comment" to avoid + warning message in python2.3 (bug 146889) + * Makefile.am, python/Makefile.am, python/tests/Makefile.am: small + change to make "make tests" a little quieter (MAKEFLAGS+=--silent) + * xpath.c: enhanced to take advantage of current libxslt handling + of tmpRVT. Fixes bug 145547. + +Fri Jul 9 14:02:54 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.h uri.c: fixed a couple of problems in the new + elfgcchack.h trick pointed by Peter Breitenlohner + +Wed Jul 7 00:45:48 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h doc/apibuild.py doc/libxml2-api.xml: fixed a bug + which prevented building with --with-minimum + +Mon Jul 5 19:43:51 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/*: releasing 2.6.11, updated and regenerated the + docs + +Mon Jul 5 18:43:47 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: make the push interfaces synchronous + * python/tests/sync.py: added a specific test + * python/tests/Makefile.am doc/examples/Makefile.am + doc/examples/index.py: added the new test, cleaning up + "make tests" output + +Mon Jul 5 15:09:17 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Kasimier to fix some Relax-NG + datatype facet problem with recent changes. + +Sat Jul 3 11:31:02 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * python/libxml.c: Changed the number of XPath extension functions + allowed to be variable-length (patch supplied by Marc-Antoine + Parent, bug 143805). Added code to "unregister" the functions + when the parser cleanup takes place. + +Fri Jul 2 14:22:14 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c python/libxml.c python/libxml2-python-api.xml: + some updates with memory debugging facilities while messing + with libxslt python bindings + +Thu Jul 1 14:53:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/generator.py python/libxml.py + python/libxml2-python-api.xml python/libxml2class.txt: + applied patch from Stéphane Bidoul to fix some Python bindings + initialization, then had to change the parserCleanup() + to handle memory released there. + * xmlmemory.c: added more debugging comments. + +Thu Jul 1 13:18:02 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: seems the reader buffer could be used while not + allocated, fixes bug #145218 + +Thu Jul 1 11:34:10 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: do not provide functions used as destructor + of classes as public methods to avoid double-free problem like + in bug #145185 + +Wed Jun 30 19:45:23 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c, xmlschemastypes.c: warning message cleanup. + Now compiles warning-free, all tests passed. + * SAX2.c: small change to comments for documentation. + No change to logic. + +Tue Jun 29 15:00:13 PDT 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: more fixes with Kasimier, looks far cleaner :-) + +Tue Jun 29 23:00:05 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: Kasimier Buchcik fixed the memory access and + allocation problem + +Tue Jun 29 19:00:32 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c xmlschemastypes.c include/libxml/xmlerror.h + include/libxml/schemasInternals.h include/libxml/xmlschemastypes.h: + applied Schemas patches from Kasimier Buchcik, there is still + one open issue about referencing freed memory. + * test/schemas/* result/schemas/*: updated with new tests from + Kasimier + +Tue Jun 29 14:52:18 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/globals.h include/libxml/xmlIO.h + doc/libxml2-api.xml doc/libxml2-refs.xml: moved some definitions + to globals.h to avoid some troubles pointed out by Rob Richards + +Mon Jun 28 11:25:31 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.m4: applied changes suggested by Mike Hommey, remove + libxml1 support and use CPPFLAGS instead of CFLAGS + +Sun Jun 27 14:17:15 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: another, more 'experimental' feature to + get compiler optimization based on gcc runtime profiling + +Sun Jun 27 14:02:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * elfgcchack.h doc/elfgcchack.xsl libxml.h: hack based on Arjan van de + Ven suggestion to reduce ELF footprint and generated code. Based on + aliasing of libraries function to generate direct call instead of + indirect ones + * doc/libxml2-api.xml doc/Makefile.am doc/apibuild.py: added automatic + generation of elfgcchack.h based on the API description, extended + the API description to show the conditionals configuration flags + required for symbols. + * nanohttp.c parser.c xmlsave.c include/libxml/*.h: lot of cleanup + * doc/*: regenerated the docs. + +Sun Jun 27 10:02:28 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * regressions.py, regressions.xml: new files for running + regression tests under Python. Not yet complete, but + should provide good testing under both Linux and Windows. + * testHTML.c, testSAX.c, xmllint.c: changed the 'fopen' used + for --push testing to include the 'rb' param when compiled + under Windows. + +Fri Jun 25 13:38:57 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * uri.c: fixed a problem when base path was "./xxx" + * result/XInclude/*: 5 test results changed by above. + * Makefile.am: fixed a couple of spots where a new + result file used different flags that the testing one. + +Thu Jun 24 16:27:44 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: suppressed warnings from within xmlValidGetValidElements + (bug 144644) + * doc/examples/testWriter.c: corrected typo in comment for ISO-8859-1 + (bug 144245) + +Thu Jun 24 10:17:31 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: implemented bugfix from Massimo Morara for DTD + dumping problem. + * test/valid/t10.xml, result/valid/t10.*: added regression + for above + * configure.in: small change for my profile settings + +Wed Jun 23 20:18:19 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog_man.xml, xmlcatalog.1 + Docs patch from Ville Skytta, bugzilla #144841 + +Sat Jun 19 18:34:11 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml, xmllint.html, xmllint.1 + update man page to reflect William's newly disciplined return + code mojo + +Thu Jun 17 00:51:55 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/io2.c doc/examples/parse4.c: fixing a couple of + compilation errors when configured with --with-minimum + +Wed Jun 16 16:07:10 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: applied patch from Stefano Debenedetti to register + namespaces in the debug shell + +Mon Jun 14 21:56:31 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fix from Steve Ball and update of the comment. + * Makefile.am result/errors/*.str: William pointed out that + the streaming error checking part wasn't streaming, fixing + +Mon Jun 14 14:11:52 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c: patch from Igor for the default catalog path on Windows + +Sat Jun 12 09:03:57 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * configure.in: apparently wasn't updated last time + +Thu Jun 10 20:57:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * configure.in, xmlmemory.c, globals.c: fixed problem when + configuring using --with-thread-alloc + +Wed Jun 9 16:31:24 CEST 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/configure.js win32/Makefile.* minor changes for the new + layout of the Windows binary package + +Tue Jun 8 19:50:25 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/xmlerror.h: applied another patch + from Kasimier Buchcik for Schema Component Constraints + * test/schemas/* result/schemas/*: added the regression tests + +Tue Jun 8 21:27:03 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmllint.c: fixed missing error return code for schema + validation (bug 143880), also changed over to an enum for + defining the error return codes for all conditions. + +Tue Jun 8 14:01:14 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c xmlreader.c include/libxml/parser.h: fixed a serious + problem when substituing entities using the Reader, the entities + content might be freed and if rereferenced would crash + * Makefile.am test/* result/*: added a new test case and a new + test operation for the reader with substitution of entities. + +Tue Jun 8 12:14:16 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * globals.c xmlIO.c include/libxml/globals.h include/libxml/xmlIO.h: + applied patch from Rob Richards for the per thread I/O mappings + +Tue Jun 8 09:58:31 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: some further enhancement to take care of + xml:base for XPointer elements (bug 143886). Also fixed + a problem when xml:base was already specified on an + XInclude'd element. + +Mon Jun 7 22:14:58 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: fixed a problem with internal cleanup of <DIV> element + (bug 143738). + +Mon Jun 7 16:57:43 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * uri.c, include/libxml/uri.h: added a new routine + xmlBuildRelativeURI needed for enhancement of xinclude.c + * xinclude.c: changed handling of xml:base (bug 135864) + * result/XInclude/*: results of 5 tests changed as a result + of the above change + +Fri Jun 4 11:27:37 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * test/schemas/* result/schemas/*: added a bunch of tests from + Kasimier Buchcik posted on May 11 + +Thu Jun 3 17:58:25 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: new patch from Kasimier Buchcik for processContents + of wildcards attribute handling + * test/schemas/anyAttr-* result/schemas/anyAttr-*: added specific + regression tests + +Thu Jun 3 13:20:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a bug where invalid charrefs may not be detected + sometimes as pointed by Morus Walter. + * test/errors/charref1.xm result/errors/charref1.xml*: added the + test in the regression suite. + +Thu Jun 3 18:38:27 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: small change to xmlSchemaValidateAttributes, + also corrected typo on error code enum. + * include/libxml/xmlerror.h: corrected typo on schema error + code enum + +Thu Jun 3 10:12:38 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: minor cosmetic changes, no change to logic. + * result/schemas/attruse_0_[12].err: regenerated + * globals.c: added a newline at end to make gcc happy + +Wed Jun 2 21:16:26 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: applied a patch from Kasimier Buchcik + implementing attribute uses and wildcards. + * test/schemas/* result/schemas/*: added/fixed a bunch of tests + +Wed Jun 2 18:15:51 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * globals.c xmlIO.c include/libxml/globals.h: applied patch from + Rob Richards for custom I/O BufferCreateFilenane fixes bug + #143366 + +Wed Jun 02 16:25:32 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with predicate evaluation on an + empty nodeset (bug 143409) + +Wed Jun 02 11:26:41 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * testSAX.c: fixed problem with attribute listing (bug 142674) + and added macro LIBXML_TEST_VERSION to assure xmlInitParser + gets called (bug 142686) + +Sat May 29 21:35:52 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * test/schemas/date_0.xml xmlschemastypes.c: applied a patch from + Charles Bozeman fixing a side effect in date handling + +Thu May 27 19:47:48 MDT 2004 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml fix lack of cast in Xpath example + * doc/tutorial/*.html, xmltutorial.pdf rebuild html, pdf + +2004-05-25 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c: fixed c14n bug with serializing attribute namespaces + +Mon May 24 08:22:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed to allow '+' in exponent of number + (bug 143005) + * SAX2.c: fixed typo in last commit + +Sat May 22 09:08:24 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * SAX2.c: skipped call to xmlValidateNCName when compiling + --with-minimum (bug 142917) + +Tue May 18 06:48:00 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c: reverted the broken change. + +Mon May 17 23:07:15 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/*: updated the docs for 2.6.10 + +Mon May 17 05:52:03 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in : releasing 2.6.10 + +Sun May 16 23:12:35 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: avoid returning default namespace when searching + from an attribute + * entities.c xmlwriter.c: reverse xmlEncodeSpecialChars() behaviour + back to escaping " since the normal serialization routines do not + use it anymore, should close bug #134477 . Tried to make + the writer avoid it too but it didn't work. + +Sun May 16 01:07:16 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/ChangeLog.awk doc/ChangeLog.xsl: fixed escaping + handling and added direct links to bugzilla report for + bug numbers. + +Sun May 16 11:11:13 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * error.c: modified to assure proper user data is sent to + structured error routine (bug 142598) + +Sun May 16 03:18:52 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c: a couple of large static variable which should really + not be declared as such cluttered the .bss section. + +Sun May 16 03:06:31 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/ChangeLog.awk: fixed a couple of problems when parsing + libxslt ChangeLog + +Sat May 15 20:14:21 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/ChangeLog.awk doc/ChangeLog.xsl: first steps of a good + ChangeLog page generation. The awk shoudl escape characters + not okay in XML and the xslt should make links to functions + or variables or bug reported in the entries. + +Sat May 15 14:57:40 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c include/libxml/xmlsave.h: start adding API for + escaping customization. + +Sat May 15 12:38:17 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: more xmlSave cleanup, optimization and refactoring + +Fri May 14 17:51:48 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c xmlsave.c: third pass at the escaping refactoring. + +Fri May 14 12:37:24 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: enhanced the enhancement, fixed another couple of + special cases. + +Fri May 14 11:48:33 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: small enhancement to dtd handling of (a?)+ (bug 142487) + +Thu May 13 23:19:00 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c xmlsave.c include/libxml/xmlIO.h: second pass on escaping + handling, start to looks better, need to be completed and added + directly at the saving context level. + +Thu May 13 10:31:28 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c xmlsave.c include/libxml/xmlIO.h: first pass at refactoring + the escape on save routines for better performances (less malloc) + and more flexibility using the new saving context. Preliminary + work, interface will change. + +Wed May 12 22:34:03 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: added code in xmlSchemaBuildAContentModel to handle + element reference within the xs:all construct (bug 139897) + +Wed May 12 17:27:18 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: a little further fixing of fallback processing, this + time for fallback with children (bug 139520). + +Wed May 12 08:21:33 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: added code in xmlSchemaBuildContentModel to + allow ref in group definition (bug 134411). Also fixed + misc compilation warning messages. + * result/schema/group0_0_0, result/schema/group0_0_0.err: + regenerated (now no error reported). + +Tue May 11 11:55:59 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fix to the fix for #141864 from Paul Elseth + * HTMLparser.c result/HTML/doc3.htm: apply fix from David Gatwood for + #141195 about text between comments. + +Tue May 11 23:04:47 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c, include/libxml/schemasInternals.h, + include/libxml/xmlerror.h: Applied patches supplied by + Kasimier Buchcik. + * test/schemas/po1_0.xml, test/schemas/po1_0.xsd: + changed test to account for above patch. + +Tue May 11 09:06:53 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * python/tests/tstLastError.py: better portability fix for f(*args), + use apply(f, args) as Stéphane Bidoul suggested + +Mon May 10 15:49:22 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: enhanced xmlRegStateAddTrans to check if transition + is already present and, if so, to ignore the request to add it. + This has a very dramatic effect on memory requirements as well + as efficiency. It also fixes bug 141762. + +Sun May 9 20:40:59 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am python/tests/Makefile.am python/tests/tstLastError.py: + applied patch from Ed Davis to allow "make tests" to work + with Python 1.5 + +Sun May 9 19:46:13 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: apply fix for XHTML1 formating from Nick Wellnhofer + fixes bug #141266 + * test/xhtmlcomp result//xhtmlcomp*: added the specific regression + test + +Sun May 9 14:07:21 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: fix for a pedantic make check without make all request + +Sat May 8 22:56:22 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * uri.c xmlIO.c: fixing some problems in URI unescaping + and output buffer opening, this should fix #141864 + +Fri May 7 22:31:54 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c include/libxml/valid.h: fixes the use of 'list' as a parameter + * xmlIO.c include/libxml/xmlIO.h: added xmlPopInputCallback for + Matt Sergeant + +Thu May 6 21:14:38 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: enhanced the handling of subexpression ranges + which have a minOccurs of 0 (bug 140478 again); cleaned up + comments throughout the module. + +Tue May 4 00:52:16 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: adding a --maxmem option to check memory used. + +Sat May 1 01:08:44 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c xmlsave.c python/generator.py python/libxml.c: Fixed + bug #141529 i.e. various problems when building with --without-html + +Fri Apr 30 18:12:31 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmllint.c xmlreader.c: fixing bug #141384 where the reader didn't + call the deregistering functions. Also added the check to + xmllint --stream --chkregister . + +Fri Apr 30 08:57:47 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.msvc: applied a second patch from Mark Vakoc for + regression tests on Windows + +Thu Apr 29 21:47:23 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: never commit without running make tests first ! + +Thu Apr 29 20:15:20 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fix a nasty problem with reading over the end + * xmlsave.c: fix a reported memory leak apparently + +Thu Apr 29 17:05:00 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.msvc: patch from Mark Vakoc for regression tests + on Windows. + * xpath.c: the NaN problem also shows up on Borland + +Mon Apr 26 23:37:12 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: enhanced xmlFARegExec range evaluation for min + occurs 0 problems - fixes bug 140478. + +Thu Apr 22 09:12:47 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * rngparser.c: tiny path fixes the "xmlConvertCRNGFile" function name + from Kasimier Buchcik + * xmlschemas.c: recursive xs:extension fix from taihei goi + +Wed Apr 21 00:19:29 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: small buffer resizing improvement from Morten Welinder + closes #140629 + +Tue Apr 20 23:40:14 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: last version of the fix for MSC version 1200 + +Tue Apr 20 19:40:37 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: killing the strncmp vs. memcmp controversy and #140593 + +Tue Apr 20 13:27:06 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/SAX2.h: Kasimier Buchcik pointed out some + inexistent functions, cleaned them out. + +Tue Apr 20 11:42:50 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * error.c: Johnson Cameron pointed out that + initGenericErrorDefaultFunc() was really wrong. + * xmlreader.c include/libxml/xmlreader.h: xmlTextReaderMode enum + must be made public, added some missing comments on the XMLReader + header. + * c14n.c: Alexsey fixed C14N bug with processing namespaces + from attributes + +Mon Apr 19 23:27:46 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed a stupid () error + Mark name. + +Sun Apr 18 23:45:46 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.6.9 release + * doc/* News: updated and rebuilt the docs + +Sun Apr 18 22:51:43 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: relaxed id() to not check taht the name(s) passed + are actually NCName, decided this in agreement with Aleksey Sanin + since existing specs like Visa3D broke that conformance checking + and other tools seems to not implement it sigh... + * SAX2.c: check attribute decls for xml:id and the value is an + NCName. + * test/xmlid/id_err* result/xmlid/id_err*: added error testing + +Sun Apr 18 21:46:17 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: work around Microsoft compiler NaN bug raise reported + by Mark Vakoc + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: fixed a recusive extention schemas + compilation error raised by taihei goi + +Sun Apr 18 16:57:02 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: keep the ChangeLog compressed + * xmlreader.c: fix a segfault when using Close() + * python/tests/Makefile.am python/tests/reader8.py: test for + the Close() reader API. + +Sat Apr 17 22:42:13 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c, xmlwriter.c, doc/examples/parse4.c, + doc/examples/io2.c: minor warning cleanup (no change to logic) + * xinclude: fixed return value for internal function + xmlXIncludeLoadFallback (now always 0 or -1) + +Sat Apr 17 21:32:32 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * valid.c: small enhancement to fix bug 139791 + +Fri Apr 16 18:44:47 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/schemasInternals.h + include/libxml/xmlerror.h: applied patches from Kasimier Buchcik + for the attribute use support + * test/schemas/attruse* result/schemas/attruse*: added the + tests to the regression suite. + +Fri Apr 16 18:22:25 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: move the TODO as comments as the function while not + finished are usable as-is + * xmlschemas.c include/libxml/xmlerror.h: patch from Kasimier Buchcik + implementing union + * test/schemas/union_0_0.x* result/schemas/union_0_0*: added example + * python/Makefile.am: applied fix from Mike Hommey + +Fri Apr 16 23:58:42 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed problem with detecting external dtd + encoding (bug 135229). + * Makefile.am: minor change to test label + +Fri Apr 16 16:09:31 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem causing duplicate fallback + execution (bug 139520) + * test/XInclude/docs/fallback2.xml result/XInclude/fallback2.*: + added testcase + +Fri Apr 9 23:49:37 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * SAX2.c include/libxml/tree.h: adding xml:id draft support + * Makefile.am test/xmlid/id_tst* result/xmlid/id_tst*: adding + 4 first regression tests + +Fri Apr 9 11:56:08 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: fixing Red Hat bug #120482 , libxml2-python + should depend on the version of python used to compile it. + +Mon Apr 5 09:07:24 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied patch from James Bursa, frameset should + close head. + +Fri Apr 2 22:02:24 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: fixed problem in xmlRelaxNGCompareNameClasses + which was causing check-relaxng-test-suite.py test 351 to fail. + +Fri Apr 2 17:03:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: implemented fix for M$ IIS redirect provided + by Ian Hummel + * relaxng.c: fixed problem with notAllowed compilation + (bug 138793) + +Thu Apr 1 22:07:52 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * uri.c: fix for xmlUriEscape on "http://user@somewhere.com" + from Mark Vakoc. + +2004-04-01 Johan Dahlin <johan@gnome.org> + + * python/.cvsignore: Add generated files, to make cvs silent. + +Thu Apr 1 12:41:36 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: small signed-ness patch from Steve Little + +Wed Mar 31 17:47:28 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: patched a bug in parsing production 1 and 2 of + xmlschemas regexp that William pointed out while working on + #134120 + * test/regexp/branch result/regexp/branch: added a specific + regression test + +Wed Mar 31 09:50:32 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * Makefile.am: added PYTHONPATH to python tests for Schemas + and RelaxNG + * test/xsdtest/xsdtestsuite.xml: added testfile for + SchemasPythonTests + +Mon Mar 29 16:56:49 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/examples.xsl doc/examples/index.html: added + information about compiling on Unix + +Mon Mar 29 14:18:12 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixes the comments for xmlCatalogDump and xmlDumpACatalog + * doc/*: rebuilt to update + +Sun Mar 28 18:11:41 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: optimize indentation based on the new context + +Sun Mar 28 14:17:10 CEST 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/xpath2.c doc/examples/xpath2.res: handle and explain + a very tricky problem when modifying the tree based on an XPath + result query. + +Sat Mar 27 09:56:14 PST 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: fixed problem with IS_COMPILABLE flag + (bug 130216) + +Fri Mar 26 18:28:32 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Dave Beckett to correct line number + errors when using push with CDATA + +Fri Mar 26 14:53:58 CET 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/xpath1.c: added a test template + * doc/examples/xpath2.c doc/examples/xpath2.res doc/examples/*: + added a new example, and make valgrind target + +Fri Mar 26 11:47:29 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: apply fix for #136693 + +Thu Mar 25 20:21:01 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/examples/io2.c + * doc/examples/io2.res + add xmlDocDumpMemory example in response to mailing list FAQ + (rebuilt xml and html also) + +Thu Mar 25 10:33:05 CET 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c testXPath.c xmllint.c xmlschemastypes.c: applied + patch from Mark Vakoc avoiding using xmlParse* option and use + xmlRead* instead + * win32/Makefile.bcb: patch to Borland C++ builder from Eric Zurcher + to avoid problems with some pathnames. + +Tue Mar 23 12:35:08 CET 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* News: preparing 2.6.8 release, updated and rebuilt + the docs. + * Makefile.am: use valgring fro the new Python based regression tests + +Mon Mar 22 20:07:27 CET 2004 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: remove a memory leak on schemas type facets. + * check-relaxng-test-suite.py check-relaxng-test-suite2.py + check-xsddata-test-suite.py: reduce verbosity + * configure.in Makefile.am: incorporated the Python regressions + tests for Relax-NG and Schemas Datatype to "make tests" + +Mon Mar 22 16:16:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c include/libxml/xmlwriter.h doc/* : applied patch from + Alfred Mickautsch for better DTD support. + * SAX2.c HTMLparser.c parser.c xinclude.c xmllint.c xmlreader.c + xmlschemas.c: fixed bug #137867 i.e. fixed properly the way + reference counting is handled in the XML parser which had the + side effect of removing a lot of hazardous cruft added to try + to fix the problems associated as they popped up. + * xmlIO.c: FILE * close fixup for stderr/stdout + +Sun Mar 21 19:19:41 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: added an error message when an element is not + found within a <choice> (bug 126093) + +Sat Mar 20 22:25:18 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: enhanced the logic of parsing char groups to + better handle initial or ending '-' (bug 135972) + +Sat Mar 20 19:26:03 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: added check for external reference in + xmlRelaxNGGetElements (bug 137718) + * test/relaxng/rngbug-001.*, result/relaxng/rngbug-001*: added + regression test for above + +Wed Mar 17 16:37:22 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * nanohttp.c: added a close for the local file descriptor + (bug 137474) + +Mon Mar 15 15:46:59 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlsave.c: switched the output routines to use the new context. + +Mon Mar 15 10:37:18 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * relaxng.c: enhanced to ignore XML_XINCLUDE_START and XML_XINCLUDE_END + nodes (bug 137153) + +Sun Mar 14 13:19:20 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: applied patch from John Belmonte for anyURI. + +Wed Mar 10 17:22:48 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix bug reported by Holger Rauch + * test/att8 result/noent/att8 result/att8 result/att8.rdr + result/att8.sax: added the test to th regression suite + +Wed Mar 10 19:42:22 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * doc/search.php: Minor change for later verson of php requiring + $HTTP_GET_VARS. + +Wed Mar 10 00:12:31 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * tree.c: Changed the flag to xmlDocCopyNode (and similar routines), + previously used only for recursion, to use a value of '2' to + indicate copy properties & namespaces, but not children. + * xinclude.c: changed the handling of ranges to use the above new + facility. Fixes Bug 134268. + +Tue Mar 9 18:48:51 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * win32/Makefile.bcb, win32/Makefile.mingw, win32/Makefile.msvc: + added new module xmlsave with patch supplied by Eric Zurcher + (second attempt - don't know what happened to the first one!) + +Tue Mar 9 09:59:25 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/libxml.py: applied patch from Anthony Carrico + providing Python bindings for the Canonicalization C14N support. + +Mon Mar 8 11:12:23 CET 2004 Hagen Moebius <hagen.moebius@starschiffchen.de> + + * .cvsignore and python/.cvsignore patched + +Mon Mar 8 22:33:14 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: enhanced to assure that if xpointer is called + for a document, the XML_PARSE_NOENT flag is set before parsing + the included document so that entities will automatically get + taken care of. + * xpointer.c: corrected code so that, if an XML_ENTITY_REF node + is encountered, it will log it and not crash (bug 135713) + +Sun Mar 7 19:03:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: modified to make sub-includes inherit the + parse flags from the parent document (bug 132597) + +Fri Mar 5 01:13:22 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: QName handling fixes for the XML Schemas + support from Adam Dickmeiss + * test/schemas/po1_0.xsd: also fix the schemas + * test/schemas/ns[12]* result/schemas/ns[12]*: added the specific + regression tests + +Thu Mar 4 23:03:02 CET 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/Makefile.am include/libxml/Makefile.am: + paalied patch from Julio M. Merino Vidal fixing bug #134751 + to fix --with-html-dir option. + * doc/*: rebuilt fully the docs + * doc/html/libxml-xmlsave.html: new file from new header. + +Thu Mar 4 16:57:50 CET 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c testHTML.c tree.c doc/examples/*.c + include/libxml/xmlsave.h: fixing compilation bug with some options + disabled as well as --with-minimum should fix #134695 + +Thu Mar 4 15:00:45 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c: allow fallback to URI lookup when SYSTEM fails, + should close #134092 + +Thu Mar 4 14:39:38 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am tree.c xmlsave.c include/libxml/xmlsave.h: commiting + the new xmlsave module before the actuall big code change. + +Thu Mar 4 12:38:53 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Adam Dickmeiss for mixed content + * test/schemas/mixed* result/schemas/mixed*: added his regression + tests too. + +Mon Mar 1 15:22:06 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testSAX.c: fix a compilation problem about a missing timb include + +Sat Feb 28 22:35:32 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * testSAX.c: small enhancement to prevent trying to print + strings with null pointers (caused "make tests" errors on + HP-UX) + +Thu Feb 26 20:19:40 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml + * doc/xmllint.1 + * doc/xmllint.html + * doc/xmlcatalog_man.xml + * doc/xmlcatalog.1 + * doc/xmlcatalog_man.html + applying patch from Mike Hommey to clarify XML_CATALOG_FILES + use + +Thu Feb 26 23:47:43 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: patch for cross-compilation to Windows from + Christophe de VIENNE. + +Thu Feb 26 18:52:11 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * doc/*.html, doc/html/*.html: regenerated docs using older + version of xsltproc pending resolution of AVT problem + +Thu Feb 26 10:56:29 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: applied patch from Charles Bozeman to not use + the system xmllint. + +Wed Feb 25 18:07:05 CET 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlexports.h: applied patch from Roland Schwingel + for MingW + +Wed Feb 25 13:57:25 CET 2004 Daniel Veillard <daniel@veillard.com> + + * Makefile.am catalog.c configure.in: applied a cleanup patch + from Peter Breitenlohner + * tree.c: removed a doc build warning by fixing a param comment + * doc/* : rebuilt the docs + +Wed Feb 25 13:33:07 CET 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c HTMLparser.c: avoid ID error message if using + HTML_PARSE_NOERROR should fix #130762 + +Wed Feb 25 12:50:53 CET 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c relaxng.c valid.c xinclude.c xmllint.c xmlreader.c: + fixing compilation and link option when configuring with + --without-valid should fix #135309 + +Wed Feb 25 11:36:06 CET 2004 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixed the main issues reported by Peter Breitenlohner + * parser.c: cleanup + * valid.c: speedup patch from Petr Pajas + +Wed Feb 25 16:07:14 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed a memory leak (xmlXPathLangFunction) reported + on the list by Mike Hommey + +Mon Feb 23 17:28:34 CET 2004 Daniel Veillard <daniel@veillard.com> + + * doc/* NEWS configure.in: preparing 2.6.7 release, updated and + rebuilt the documentation. + +Mon Feb 23 11:52:12 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/tests/*.py: applied patch from Malcolm Tredinnick + to avoid tabs in python sources, should fix #135095 + +Sun Feb 22 23:16:23 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testSAX.c: add --timing option + * relaxng.c: use the psvi field of the nodes instead of _private + which may be used for other purposes. + +Sat Feb 21 16:57:48 CET 2004 Daniel Veillard <daniel@veillard.com> + + * encoding.c: small patch to try to fix a warning with Sun One compiler + +Sat Feb 21 16:22:35 CET 2004 Daniel Veillard <daniel@veillard.com> + + * encoding.c: small patch removing a warning with MS compiler. + +Sat Feb 21 13:52:30 CET 2004 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: added "relaxng" option to the debugging shell + * Makefile.am test/errors/* result/errors/*: some regression tests + for some error tests cases. + +Fri Feb 20 09:56:47 CET 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: xmlAttrSerializeTxtContent don't segfault if NULL + is passed. + * test/att7 result//att7*: adding an old regression test + laying around on my laptop + +Thu Feb 19 17:33:36 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed xmllint --memory --stream memory consumption + on large file by using xmlParserInputBufferCreateStatic() with + the mmap'ed file + +Thu Feb 19 13:56:53 CET 2004 Daniel Veillard <daniel@veillard.com> + + * tree.c: some clarification in xmlDocDumpMemory() documentation + * xmllint.c: fixed xmllint --stream --timing to get timings back + +Wed Feb 18 15:20:42 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a problem in push mode when attribute contains + unescaped '>' characters, fixes bug #134566 + * test/att6 result//att6*: added the test to the regression suite + +Tue Feb 17 17:26:31 CET 2004 Daniel Veillard <daniel@veillard.com> + + * valid.c: removing a non-linear behaviour from ID/IDREF raised + by Petr Pajas. Call xmlListAppend instead of xmlListInsert in + xmlAddRef + +Tue Feb 17 13:27:27 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/tests/indexes.py python/tests/reader.py: indicated + encoding of the test file, needed for python 2.3 + +Tue Feb 17 21:08:11 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with numbers having > 19 + fractional places (bug 133921) + +Tue Feb 17 12:47:20 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: applied optimization patch from Petr Pajas + +Tue Feb 17 12:39:08 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c include/libxml/xmlwriter.h: applied update + from Alfred Mickautsch and the added patch from Lucas Brasilino + +Sun Feb 15 12:01:30 CET 2004 Daniel Veillard <daniel@veillard.com> + + * benchmark.png index.html xml.html: updating the benchmark + graph and using a PNG instead of a GIF + * xmlreader.c: updated the TODO + +Sat Feb 14 18:55:40 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml + * doc/tutorial/xmltutorial.pdf + * doc/tutorial/*.html + Fix bug in XPath example in the tutorial, thanks to Carlos, whose + last name I don't know, for pointing this out + +Thu Feb 12 16:28:12 CET 2004 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in: preparing release of 2.6.6 + * doc/*: updated the docs and rebuilt them + +Thu Feb 12 13:41:16 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixing bug #132930 with the provided patch, a bit + suspicious about it but this is fairly contained and regression + tests still passes. + * test/schemas/all1* result/schemas/all1*: added the test to + the regression suite. + +Thu Feb 12 12:54:26 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #132575 about finding the end of the + internal subset in push mode. + * test/intsubset.xml result/intsubset.xml* result/noent/intsubset.xml: + added the test to the regression suite + +Wed Feb 11 14:19:31 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c xmlIO.c encoding.c include/libxml/parser.h + include/libxml/xmlIO.h: added xmlByteConsumed() interface + * doc/*: updated the benchmark rebuilt the docs + * python/tests/Makefile.am python/tests/indexes.py: added a + specific regression test for xmlByteConsumed() + * include/libxml/encoding.h rngparser.c tree.c: small cleanups + +Wed Feb 11 08:13:58 HKT 2004 William Brack <wbrack@mmm.com.hk + + * tree.c: fixed missing output of internal DTD param entities when + nothing else present in DTD (bug 134052) + +Tue Feb 10 19:24:38 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * encoding.c: applied patch supplied by Christophe Dubach + to fix problem with --with-minimum configuration + (bug 133773) + * nanoftp.c: fixed potential buffer overflow problem, + similar to fix just applied to nanohttp.c. + +Mon Feb 9 18:40:21 CET 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * nanohttp.c: fixed the fix for the buffer overflow, thanx + William :-) + +Mon Feb 9 22:37:14 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * acinclude.m4, configure.in: fixed problem concerning + determining SOCKLEN_T as pointed out by Daniel Richard G. + on the mailing list + +Mon Feb 9 15:31:24 CET 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * nanohttp.c: fixed buffer overflow reported by Yuuichi Teranishi + +Mon Feb 9 13:45:59 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xpath.c: small patch from Philip Ludlam to avoid warnings. + +Mon Feb 9 13:41:47 CET 2004 Daniel Veillard <daniel@veillard.com> + + * encoding.c: applied a small patch from Alfred Mickautsch + to avoid an out of bound error in isolat1ToUTF8() + +Mon Feb 9 13:35:50 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: remove the warning on the 2001 namespace + * parser.c parserInternals.c xpath.c: remove some warnings + when compiling with MSVC6 + * nanohttp.c: applied a patch when using _WINSOCKAPI_ + +Sun Feb 8 12:09:55 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: added a small hack to fix interference between + my fixes for bugs 132585 and 132588. + * python/libxml.c: fixed problem with serialization of namespace + reported on the mailing list by Anthony Carrico + +Sat Feb 7 16:53:11 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem with function xmlXIncludeCopyRange + (bug 133686). + +Fri Feb 6 21:03:41 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlwriter.c: fixed problem with return value of + xmlTextWriterWriteIndent() (bug 133297) + +Fri Feb 6 19:07:04 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: changed coding to output good XIncludes when + one or more bad ones are present (bug 132588) + +Fri Feb 6 17:34:21 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: corrected handling of empty fallback condition + (bug 132585) + +Fri Feb 6 15:28:36 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c: added initialisation for ctxt->vctxt + in HTMLInitParser (bug 133127) + * valid.c: minor cosmetic change (removed ATTRIBUTE_UNUSED + from several function params) + +Tue Feb 3 16:48:57 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem regarding freeing of dictionary + when there are errors within an XInclude file (bug 133106). + Thanks to Oleg Paraschenko for the assistance. + +Tue Feb 3 09:53:18 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xmlschemastypes.c: fixed validation of maxLength with no + content using patch submitted by Eric Haszlakiewicz + (bug 133259) + +Tue Feb 3 09:21:09 CET 2004 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/xmlreader.h include/libxml/xmlmemory.h: added + calling convention to the public function prototypes (rep by + Cameron Johnson) + * include/libxml/xmlexports.h: fixed mingw+msys compilation + (rep by Mikhail Grushinskiy) + +Mon Feb 2 20:22:18 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xmlwriter.c: enhanced output indenting (bug 133264) + +Mon Feb 2 16:13:33 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xmlreader.c, include/libxml/xmlreader.h: applied patch from + Steve Ball to provide structured error reports. + +Sun Feb 1 01:48:14 PST 2004 William Brack <wbrack@mmm.com.hk> + + * tree.c, include/libxml/tree.h: moved serialization of + attribute text data (xmlSerializeContent) into a separate + routine (xmlSerializeTxtContent) so it can be used by xmlwriter.c + * xmlwriter.c: changed handling of attribute string to use the + routine above (fixed bug 131548) + +Sat Jan 31 08:22:02 MST 2004 John Fleck <jfleck@inkstain.net + + * doc/examples/reader1.c, reader2.c, reader3.c + * doc/examples/examples.xml + * doc/examples/*.html + add note that reader examples need libmxl2 > 2.6, rebuild + html - this time doing it correctly :-) + +Fri Jan 30 20:45:36 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/examples/examples.xml + * doc/examples/*.html + add note that reader examples need libmxl2 > 2.6, rebuild + html + +Thu Jan 29 23:51:48 PST 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: added (void *) type override to prevent + warning on Solaris (Bug 132671) + +Wed Jan 28 07:20:37 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/examples/Makefile.am + per Jan. 15 email to the list from oliverst, the index.html + file from this directory wasn't making it into the tarball + +Mon Jan 26 18:01:00 CET 2004 Daniel Veillard <daniel@veillard.com> + + * acinclude.m4: applied fix from Alexander Winston for a problem + related to automake-1.8 , c.f. #132513 and #129861 + +Mon Jan 26 12:53:11 CET 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/index.py: don't rely on . being on the path for + make tests, should keep Mr. Crozat quiet until next time... + +Sun Jan 25 21:45:03 CET 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: preparing release 2.6.5, rebuilt the + docs, checked rngparser stuff does not end up in the tarball + +Sun Jan 25 20:59:20 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: applied patch from Frederic Peters + fixing the wrong arg order in xpath callback in bug #130980 + +Sun Jan 25 20:52:09 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixing #130453 XInclude element with no href attribute + * relaxng.c rngparser.c include/libxml2/relaxng.h: fully integrating + the compact syntax will require more work, postponed for the + 2.6.5 release. + +Sat Jan 24 09:30:22 CET 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/schemasInternals.h xmlschemas.c: applied patch from + Steve Ball to avoid a double-free. + +Fri Jan 23 14:03:21 CET 2004 Daniel Veillard <daniel@veillard.com> + + * doc/examples/*: added io1.c an example ox xmlIO usage and io1.res + test result, fixed a awful lot of memory leaks showing up in + testWriter.c, changed the examples and the Makefiles to test + memory leaks. + * xmlwriter.c: fixed a memory leak + * Makefile.am: run the doc/examples regression tests as part of + make tests + * xpath.c include/libxml/xpath.h: added xmlXPathCtxtCompile() to + compile an XPath expression within a context, currently the goal + is to be able to reuse the XSLT stylesheet dictionnary, but this + opens the door to others possible optimizations. + * dict.c include/libxml/dict.h: added xmlDictCreateSub() which allows + to build a new dictionnary based on another read-only dictionnary. + This is needed for XSLT to keep the stylesheet dictionnary read-only + while being able to reuse the strings for the transformation + dictionnary. + * xinclude.c: fixed a dictionnar reference counting problem occuring + when document parsing failed. + * testSAX.c: adding option --repeat for timing 100times the parsing + * doc/* : rebuilt all the docs + +Thu Jan 22 14:17:05 2004 Aleksey Sanin <aleksey@aleksey.com> + + * xmlmemory.c: make xmlReallocLoc() accept NULL pointer + +Thu Jan 22 08:26:20 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: applied patch from John Belmonte for + normalizedString datatype support. + +Thu Jan 22 10:43:22 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed problem with union when last() is used + in predicate (bug #131971) + * xpointer.c: minor change to comment for doc generation + +Wed Jan 21 17:03:17 CET 2004 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #131745 raised by Shaun McCance with the + suggested patch + +Wed Jan 21 10:59:55 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied patch from Alfred Mickautsch fixing a memory + leak reported on the list. + +Thu Jan 15 00:48:46 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/tests/tstLastError.py: applied + patch from Stéphane Bidoul to add enums to the Python bindings. + +Tue Jan 13 21:50:05 CET 2004 Daniel Veillard <daniel@veillard.com> + + * testHTML.c: another small patch from Mark Vakoc + +Tue Jan 13 21:39:58 CET 2004 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c relaxng.c testRelax.c testSchemas.c: applied + patch from Mark Vakoc to not use SAX1 unless necessary. + +Mon Jan 12 17:22:57 CET 2004 Daniel Veillard <daniel@veillard.com> + + * dict.c parser.c xmlstring.c: some parser optimizations, + xmllint --memory --timing --repeat --stream ./db10000.xml + went down from 16.5 secs to 15.5 secs. + +Thu Jan 8 17:57:50 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: removed a memory leak remaining from the switch + to a dictionnary for string allocations c.f. #130891 + +Thu Jan 8 17:48:46 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixing some problem if configured --without-xinclude + c.f. #130902 + +Thu Jan 8 17:42:48 CET 2004 Daniel Veillard <daniel@veillard.com> + + * configure.in: changed AC_OUTPUT() macro to avoid a cygwin problem + c.f. #130896 + +Thu Jan 8 00:36:00 CET 2004 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.bcb win32/Makefile.mingw win32/Makefile.msvc: + applying patch from Mark Vakoc for Windows + * doc/catalog.html doc/encoding.html doc/xml.html: applied doc + fixes from Sven Zimmerman + +Tue Jan 6 23:51:46 CET 2004 Daniel Veillard <daniel@veillard.com> + + * python/libxml2-python-api.xml python/libxml_wrap.h python/types.c + python/tests/Makefile.am python/tests/tstLastError.py: applied + patch from Stéphane Bidoul for structured error handling from + python, and the associated test + +Tue Jan 6 23:18:11 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * configure.in: fixed Bug130593 + * xmlwriter.c: fixed compilation warning + +Tue Jan 6 15:15:23 CET 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlstring.h: fixed the comment in the header + * doc/*: rebuilt the docs + +Tue Jan 6 19:40:04 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * encoding.c, parser.c, xmlstring.c, Makefile.am, + include/libxml/Makefile.am, include/libxml/catalog.c, + include/libxml/chvalid.h, include/libxml/encoding.h, + include/libxml/parser.h, include/libxml/relaxng.h, + include/libxml/tree.h, include/libxml/xmlwriter.h, + include/libxml/xmlstring.h: + moved string and UTF8 routines out of parser.c and encoding.c + into a new module xmlstring.c with include file + include/libxml/xmlstring.h mostly using patches from Reid + Spencer. Since xmlChar now defined in xmlstring.h, several + include files needed to have a #include added for safety. + * doc/apibuild.py: added some additional sorting for various + references displayed in the APIxxx.html files. Rebuilt the + docs, and also added new file for xmlstring module. + * configure.in: small addition to help my testing; no effect on + normal usage. + * doc/search.php: added $_GET[query] so that persistent globals + can be disabled (for recent versions of PHP) + +Mon Jan 5 20:47:07 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/customfo.xsl + * doc/tutorial/customhtml.xsl + update custom tutorial-building stylesheets in preparation + for tutorial update + +Tue Jan 6 00:10:33 CET 2004 Daniel Veillard <daniel@veillard.com> + + * rngparser.c: commiting the compact relax ng parser. It's not + completely finished, it's not integrated but I want to save the + current state + +Mon Jan 5 22:22:48 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * doc/apibuild.py, doc/APIconstructors.html, doc/libxml2-refs.xml, + win32/libxml2.def.src: fixed apibuild.py's generation of + "constructors" to be in alphabetical order (instead of previous + random sequence); regenerated resulting files. + +Mon Jan 5 14:03:59 CET 2004 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied patch from Lucas Brasilino fixing an indent + problem. + +Sun Jan 4 18:54:29 MST 2004 John Fleck <jfleck@inkstain.net> + + * doc/newapi.xsl: change background color of function + declaration to improve readability + * doc/*: rebuild docs with new stylesheet + +Sun Jan 4 22:45:14 HKT 2004 William Brack <wbarck@mmm.com.hk> + + * parser.c, include/libxml/parser.h: added a routine + xmlStrncatNew to create a new string from 2 frags. + * tree.c: added code to check if node content is from + dictionary before trying to change or concatenate. + +Sun Jan 4 08:57:51 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xmlmemory.c: applied suggestion from Miloslav Trmac (see + Bug 130419) and eliminated xmlInitMemoryDone. More + improvement needed. + * xml2-config.in: added an additional flag (--exec-prefix) to + allow library directory to be different from include directory + (Bug 129558). + +Fri Jan 2 21:22:18 CET 2004 Daniel Veillard <daniel@veillard.com> + + * error.c: applied patch from Stéphane Bidoul for structured error + reporting. + +Fri Jan 2 21:03:17 CET 2004 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlwriter.h xmlwriter.c: applied the patch from + Lucas Brasilino to add indentation support to xmlWriter + +Fri Jan 2 22:58:29 HKT 2004 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem with "recursive" include (fallback + contains another include - Bug 129969) + +Fri Jan 2 11:40:06 CET 2004 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: found and fixed a bug misallocating some non + blank text node strings from the dictionnary. + * xmlmemory.c: fixed a problem with the memory debug mutex + release. + +Wed Dec 31 22:02:37 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xinclude.c: fixed problem caused by wrong dictionary + reference count, reported on the list by Christopher + Grayce. + +Wed Dec 31 15:55:55 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * python/generator.py, python/libxml2class.txt: fixed problem + pointed out by Stéphane Bidoul on the list. + * xinclude.c, xpointer.c, xpath.c, include/libxml/xpointer.h: + completed modifications required to fix Bug 129967 (at last!). + Now wait to see how long before further trouble... + +Tue Dec 30 16:26:13 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * parser.c, xmlmemory.c, include/libxml/xmlmemory.h: Fixed + memory leak reported by Dave Beckett + * xmlschemas.c: Removed spurious comment reported on the mailing + list + * xinclude.c, xpath.c, xpointer.c, libxml/include/xpointer.h: + Further work on Bug 129967 concerning xpointer range handling + and range-to function; much better, but still not complete + +Mon Dec 29 18:08:05 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: xmlValidateElement could crash for element holding a + namespace declaration but not in a namespace. Oliver Fischer + provided the example. + +Mon Dec 29 11:29:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: issue validation status on stderr, not stdout as suggested + by Pawel Palucha + * result/relaxng/*: this change slightly all the output from RNG + regressions. + +Mon Dec 28 10:47:32 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: edited a couple of comments in accordance with + posting on the mailing list (no logic change) + * xpointer.c: working on Bug 129967, added check for NULL + nodeset to prevent crash. Further work required. + * xpath.c: working on Bug 129967, added code to handle + XPATH_LOCATIONSET in RANGETO code, also added code to + handle it in xmlXPathEvaluatePredicateResult. Further + work required. + +Sat Dec 27 12:32:58 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: added tests for xs:all to assure minOccurs + and maxOccurs <= 1 (Bug 130020) + +Sat Dec 27 09:53:06 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: fixed xmlFAParseCharRange for Unicode ranges + with patch from Charles Bozeman. + +Fri Dec 26 14:03:41 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlregexp.c: fixed problem causing segfault on validation error + condition (reported on mailing list) + +Thu Dec 25 21:16:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlschemas.c: fixed missing dictionaries for Memory and Doc + parser contexts (problem reported on mailing list) + * doc/apibuild.py: small change to prevent duplicate lines + on API functions list. It will take effect the next time + the docs are rebuilt. + +Wed Dec 24 12:54:25 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: updated the docs and prepared a new + release 2.6.4 + +Wed Dec 24 12:07:52 CET 2003 Daniel Veillard <daniel@veillard.com> + + * legacy.c: remove deprecated warning on startElement() + +Wed Dec 24 12:04:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c result/XInclude/nodes2.*: XInclude xpointer support + was broken with the new namespace. Fixes #129932 + +Wed Dec 24 00:29:30 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/schemasInternals.h: types might be + redefined in includes, quick fix to allow this but lacks the + equality of the redefinition test. + +Tue Dec 23 15:14:37 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * valid.c: fixed bug concerning validation using external + dtd of element with mutiple namespace declarations + (Bug 129821) + +Tue Dec 23 11:41:42 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * tree.c: inhibited production of "(null):" in xmlGetNodePath + when node has default namespace (Bug 129710) + +Tue Dec 23 09:29:14 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xpath.c: small enhancement to xmlXPathCmpNodes to assure + document order for attributes is retained (Bug 129331) + +Mon Dec 22 19:06:16 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c xmlreader.c: change xmlReadFd() xmlCtxtReadFd() + xmlReaderNewFd() xmlReaderForFd(), change those to not close + the file descriptor. Updated the comment, should close #129683 + +Mon Dec 22 00:34:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixed a serious problem in XInclude #129021 + +Sun Dec 21 13:59:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed bug #129489, propagation of parsing flags + in entities. + * parser.c xmlreader.c: improved the comments of parsing options + +Sun Dec 21 18:14:04 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * python/Makefile.am, python/tests/Makefile.am, + doc/Makefile.am: applied fixes to allow build from + 'outside' directory (Bug 129172) + +Sat Dec 20 16:42:07 MST 2003 John Fleck <jfleck@inkstain.net> + + * tree.c - add explanation of namespace inheritance when + ns is NULL to xmlNewChild and xmlNewTextChild API doc + +Sat Dec 20 18:17:28 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * include/libxml/xpathInternals.h: undid last change (my + bad). Put necessary fix in libxslt/libexslt instead. + * include/libxml/DOCBparser.h: put test for __GCC__ on + warning directive (Bug 129105) + +Sat Dec 20 10:48:37 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * include/libxml/xpathInternals.h: fixed xmlXPathReturnString + to cater for NULL pointer (bug 129561) + * globals.c: added comment to suppress documentation warning + * doc/apibuild.py: fixed problem which caused last APIchunkxx.html + to be lost. Rebuilt doc/* (including adding APIchunk26.html) + +Fri Dec 19 18:24:02 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: trying to fix #129692 xmlTextReaderExpand() when + using an xmlReaderWalker() + +Thu Dec 18 20:10:34 MST 2003 John Fleck <jfleck@inkstain.net> + + * tree.c: fix misc. typos in doc comments + * include/libxml/tree.h: elaborate on macro define doc comments + * doc/*: rebuild docs + +Wed Dec 17 16:07:33 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/examples/*: don't call the result files .out but .res as + the Makefiles tend to try generating binaries for .out targets... + +Tue Dec 16 20:53:54 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/html/libxml-pattern.html: - cvs add API docs for new + pattern stuff + +Tue Dec 16 20:40:40 MST 2003 John Fleck <jfleck@inkstain.net> + + * tree.c + * doc/*: + Elaborate in documentation discussion of xmlNewChild + and xmlNewTextChild. Thanks to Steve Lenti for pointing + out the usefulness of a more explicit explanation of the + reserved character escaping issue. + +Fri Dec 12 15:55:15 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c: applied patch from Stefan Kost + +Thu Dec 11 15:15:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/examples/testWriter.c: applied small fix from Lucas Brasilino + +Thu Dec 11 14:55:22 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.* win32/configure.js: Added pattern support + +Wed Dec 10 14:11:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* libxml.spec.in: preparing release of + libxml2-2.6.3, updated and regenerated the docs. + +Wed Dec 10 11:43:33 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c pattern.c: removed some compilation warnings + +Wed Dec 10 11:16:29 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: fixing bug #119264 xmllint failing to report + serialization errors in some cases. + +Tue Dec 9 23:50:23 CET 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c: fixed an XML entites content serialization + potentially triggered by XInclude, see #126817 + +Tue Dec 9 16:12:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied the patch to xmlTextWriterStartPI() + suggested by Daniel Schulman in #128313 + +Tue Dec 9 15:18:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in Makefile.am: another patch from Kenneth Haley + for Mingw, c.f. #128787 + +Tue Dec 9 15:07:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlexports.h: applied patch from Kenneth Haley + for compiling on Mingw see #128786 + +Tue Dec 9 14:52:59 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: some flags were not passed down correctly as + parsing options. Fixes #126806 + +Tue Dec 9 12:29:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c xmllint.c xmlreader.c include/libxml/xinclude.h + include/libxml/xmlerror.h: augmented the XInclude API + to be able to pass XML parser flags down to the Inclusion + process. Also resynchronized with the Last Call W3C Working + Draft 10 November 2003 for the xpointer attribute. + * Makefile.am test/XInclude/docs/nodes[23].xml + result/XInclude/*: augmented the tests for the new namespace and + testing the xpointer attribute, changed the way error messages + are tested + * doc/*: regenerated the documentation + +Mon Dec 8 18:38:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * error.c: filter warning messages if the global setting blocks them + * xinclude.c xmlreader.c include/libxml/xinclude.h + include/libxml/xmlerror.h: updated the change of namespace at + the XInclude level, raise a warning if the old one is found, + and some cleanup + +Mon Dec 8 13:09:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: tentative fix for #126117 character reference in + attributes output problem in some cornercase. + +Mon Dec 8 11:08:45 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: tried to fix the problems reported in + bug #126735 + * xpath.c SAX2.c error.c parser.c valid.c include/libxml/xmlerror.h: + fixed again some problem trying to use the structured error + handlers, c.f. bug #126735 + * result/VC/ElementValid: tiny change due to the fix + +Sun Dec 7 22:27:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * error.c: fixed __xmlRaiseError to use structured error handlers + defined by xmlSetStructuredErrorFunc(), fixes bug #126211 + +Sun Dec 7 20:30:53 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: attempt to fix #126211 ... + +Fri Dec 5 17:07:29 CET 2003 Daniel Veillard <daniel@veillard.com> + + * pattern.c xmlreader.c xmllint.c include/libxml/pattern.h + include/libxml/xmlreader.h: fixed the pattern interfaces + but not yet the parser to handle the namespaces. + * doc/examples/reader3.c doc/*: fixed the example, rebuilt the docs. + +Fri Dec 5 15:49:44 CET 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c xmlwriter.c doc/apibuild.py include/libxml/globals.h + include/libxml/pattern.h include/libxml/schemasInternals.h + include/libxml/xmlexports.h include/libxml/xmlwriter.h: cleanup + the make rebuild in doc, this include new directive to stop + documentation warnings + * doc/* doc/html/*: rebuilt the docs + * pattern.c xmlreader.c include/libxml/pattern.h + include/libxml/xmlreader.h: adding xmlTextReaderPreservePattern() + to save nodes while scanning the tree with the reader, cleanup + the way element were freed, and xmlTextReaderPreserve() + implementation, the API might change for namespace binding support + when compiling patterns. + * doc/examples/*: added reader3.c exposing the xmlTextReaderPreserve() + +Thu Dec 4 15:10:57 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: oops forgot to modify/commit the new code. + +Thu Dec 4 13:29:19 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml_wrap.h: + cleanup the output buffer support to at least get the basic + to work + * python/tests/outbuf.py python/tests/serialize.py: fixes and + cleanup. + * include/libxml/xmlwriter.h: cleanup + +Wed Dec 3 21:38:56 MST 2003 John Fleck <jfleck@inkstain.net> + + * include/libxml/xmlversion.h.in + * doc/*: add WITH_TRIO comment so it shows up in the docs, rebuild + docs + +Wed Dec 3 13:10:08 CET 2003 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in xmlregexp.c: fix bug #128401 affecting + regexp quantifiers + +Tue Dec 2 23:29:56 CET 2003 Daniel Veillard <daniel@veillard.com> + + * pattern.c include/libxml/pattern.h: adding the pattern node + selection code. Inheried in part from libxslt but smaller. + * Makefile.am configure.in include/libxml/xmlversion.h.in: + integrated the pattern module, made it a configure time option + * xmllint.c: added --pattern to test when doing --stream + +Tue Dec 2 11:25:25 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed a problem in xmlreader validation when + streaming exposed by reader2 example. + +Mon Dec 1 20:40:51 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xml.html + * doc/docs.html: + add reference to the Code Examples page to docs.html list + of resources + +Mon Dec 1 12:30:28 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.bcb win32/configure.js: Applied the BCB patch + from Eric + +Sun Nov 30 21:33:37 MST 2003 John Fleck <jfleck@inkstain.net> + + * include/libxml/xinclude.h + * doc/*: Add comments for macro definitions in xinclude.h and + rebuild the docs + +Sun Nov 30 21:06:29 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/docdescr.doc + Updating William's explanation of how to build docs, + reflecting Daniel's new docs build system + +Sat Nov 29 18:38:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlmemory.c: enhanced by adding mutex to protect global + structures in a multi-threading environment. This fixed + some random errors on the Threads regression tests. + +Fri Nov 28 21:39:49 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xml.html doc/python.html: fix tst.py text, which didn't + import sys + +Fri Nov 28 17:28:47 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * encoding.c, include/libxml/encoding.h: Enhanced the handling of + UTF-16, UTF-16LE and UTF-16BE encodings. Now UTF-16 output is + handled internally by default, with proper BOM and UTF-16LE + encoding. Native UTF-16LE and UTF-16BE encoding will not generate + BOM on output, and will be automatically recognized on input. + * test/utf16lebom.xml, test/utf16bebom.xml, result/utf16?ebom*: + added regression tests for above. + +Thu Nov 27 19:25:10 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.* win32/configure.js: Modified to allow coexistent + build with all compilers. Added C-Runtime option for MSVC. Included + xmlWriter. + * xmlwriter.c: Added IN_LIBXML macro + +Wed Nov 26 21:54:01 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.bcb: applied patch from Eric + +Wed Nov 26 21:33:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h: stefan on IRC pointed out that XML_GET_LINE + is broken on 2.6.x + +Tue Nov 25 18:39:44 CET 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c: fixed #127877, never output " in element content + * result/isolat3 result/slashdot16.xml result/noent/isolat3 + result/noent/slashdot16.xml result/valid/REC-xml-19980210.xml + result/valid/index.xml result/valid/xlink.xml: this changes the + output of a few tests + +Tue Nov 25 16:36:21 CET 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/schemasInternals.h include/libxml/xmlerror.h + testSchemas.c xmlschemas.c: added xsd:include support, fixed + testSchemas behaviour when a schemas failed to parse. + * test/schemas/vdv-* result/schemas/vdv-first5_0_0*: added one + test for xsd:include from Eric Van der Vlist + +Tue Nov 25 08:18:12 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: swapped the attribute defaulting and attribute checking + parts of parsing a new element start, fixes bug #127772 + * result/valid/127772.* test/valid/127772.xml + test/valid/dtds/127772.dtd: added the example in the regression tests + +Tue Nov 25 08:00:15 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: moved xmlCleanupThreads() to the end of xmlCleanupParser() + to avoid bug #127851 + +Mon Nov 24 15:26:21 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixing some Negative Character Group and + Character Class Subtraction handling. + +Mon Nov 24 14:01:57 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: more XML Schemas fixes based + on Eric van der Vlist examples + * result/schemas/vdv-first4* test/schemas/vdv-first4*: + added regression tests + * doc/examples/Makefile.am doc/examples/index.py: do not + regenerate the index on make all target, but only on + make rebuild to avoid troubles. + +Sat Nov 22 21:35:42 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c xmlschemastypes.c include/libxml/xmlerror.h + include/libxml/schemasInternals.h: lot of bug fixes, cleanup, + starting to add proper namespace support too. + * test/schemas/* result/schemas/*: added a number of tests + fixed the result from some regression tests too. + +Fri Nov 21 20:50:59 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xml.html, docs.html: remove reference to gtk-doc now that + Daniel has removed it, fix link to George's IBM article, other + minor edits + +Fri Nov 21 01:26:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: applied patch from Robert Stepanek to start + import os schemas support, cleaned up stuff and the patch. + * test/schemas/import0_0.* result/schemas/import0_0_0*: added test + to regression, fixed a few regressions too. + +Thu Nov 20 22:58:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied two parsing fixes from James Bursa + +Thu Nov 20 19:20:46 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/examples/*: added two xmlReader examples + * xmlreader.c: cleaned up some bugs in the process + +Thu Nov 20 12:54:30 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c include/libxml/xmlwriter.h: applied patch from + Alfred Mickautsch, bugfixes and comments + * doc/examples/*: added his test as the xmlWriter example + * doc/html/ doc/*.html: this resulted in some improvements + * include/libxml/hash.h: fixed an inclusion problem when + <libxml/hash.h> wasn't preceeded by <xml/parser.h> + +Wed Nov 19 17:19:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fix an error message + * doc/examples/*: added tree2 example from Lucas Brasilino + +Wed Nov 19 17:50:47 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/newapi.xsl: improve the sort sequence for page content + * doc/html/*.html: regenerate the web pages + +Wed Nov 19 00:48:56 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: do not package cvs versioning temp files. + * doc/apibuild.py doc/libxml2-api.xml doc/newapi.xsl: more cleanup, + slightly improved the API xml format, fixed a lot of small + rendering problems + * doc/html/libxml*.html: rebuilt + +Tue Nov 18 21:51:15 CET 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/*.h include/libxml/*.h.in: modified the file + header to add more informations, painful... + * genChRanges.py genUnicode.py: updated to generate said changes + in headers + * doc/apibuild.py: extract headers, add them to libxml2-api.xml + * *.html *.xsl *.xml: updated the stylesheets to flag geprecated + APIs modules. Updated the stylesheets, some cleanups, regenerated + * doc/html/*.html: regenerated added back book1 and libxml-lib.html + +Tue Nov 18 14:43:16 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am doc/*.xsl doc/*.html doc/apibuild.py: cleaned up + the build process to remove all remains from the old gtk-doc + inherited, libxml2-refs.xml is now generated by apibuild.py, the + stylesheets have been improved, and the API*html now generated + are XHTML1 valid too + +Tue Nov 18 14:28:32 HKT 2003 William Brack <mmm.com.hk> + + * genChRanges.py, chvalid.c, include/libxml/chvalid.h: minor + enhancement to prevent comment with unreferenced variable. + * threads.c xmlreader.c xmlwriter.c: edited some comments to + improve auto-generation of documentation + * apibuild.py: minor change to an error message + +Mon Nov 17 17:55:51 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/apibuild.py doc/libxml2-api.xml doc/newapi.xsl: more cleanup, + improving navigation + * doc/html/*.html: updated the result + +Mon Nov 17 14:54:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml doc/newapi.xsl: + improvement of the stylesheets, fixed a API generation problem, + switched the stylesheet and Makefile to build the HTML output. + * doc/html/*.html: complete update, ditched some old files, might + introduce some breakage... + +Mon Nov 17 12:50:28 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/newapi.xsl: lot of improvements, this starts looking good + enough to be usable. + +Mon Nov 17 00:58:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/newapi.xsl: stylesheet to build HTML pages from the + API XML description, Work in Progress + +Sun Nov 16 16:03:24 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed bug 126976 (string != empty nodeset + should be false) + +Sun Nov 16 14:00:08 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/html/*.html: Finally - found the problem with the + page generation (XMLPUBFUN not recognized by gtkdoc). + Re-created the pages using a temporary version of + include/libxml/*.h. + * testOOMlib.c,include/libxml/encoding.h, + include/libxml/schemasInternals.h,include/libxml/valid.h, + include/libxml/xlink.h,include/libxml/xmlwin32version.h, + include/libxml/xmlwin32version.h.in, + include/libxml/xpathInternals.h: minor edit of comments + to help automatic documentation generation + * doc/docdescr.doc: small elaboration + * doc/examples/test1.c,doc/examples/Makefile.am: re-commit + (messed up on last try) + * xmlreader.c: minor change to clear warning. + +Sat Nov 15 19:20:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Copyright: fixed some wording + * libxml.spec.in: make sure doc/examples is packaged + * include/libxml/tree.h valid.c xmlreader.c: fixed the really + annoying problem about xmlRemoveID and xmlReader streaming. + Thing looks fixed now, had to add a doc reference to the + xmlID structure though... + +Sat Nov 15 09:53:36 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/docdescr.doc: added description of man page building + +Sat Nov 15 19:08:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/html/libxml-chvalid.html, doc/html/libxml-dict.html, + doc/html/libxml-list.html, doc/html/libxml-testOOMlib.html, + doc/html/libxml-wincecompat, doc/html/winsockcompat.html, + doc/html/libxml-xmlexports.html, doc/html/libxml-xmlversion.html, + doc/html/libxml-xmlwin32version.html, doc/html/libxml-xmlwriter.html: + added missing pages for the website. + +Sat Nov 15 18:23:48 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/Makefile.am doc/*.html doc/html/*.html: rebuilt the + generated pages (again), manually restored doc/html/index.html + and manually edited generated file doc/gnome-xml.xml to put + in appropriate headings. + * doc/docdescr.doc: new file to describe details of the + document generation (helps my memory for the next time) + * genChRanges.py,chvalid.c,include/libxml/chvalid.h: minor + enhancement to please the automatic documentation generation. + +Fri Nov 14 23:47:31 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * catalog.c,relaxng.c,testAutomata.c,xpointer.c,genChRanges.py, + chvalid.c,include/libxml/chvalid.h,doc/examples/test1.c: + minor error cleanup for gcc-3.3.[12] compilation warnings. + +Fri Nov 14 15:08:13 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * tree.c: minor changes to some comments + * doc/*.html: rebuilt the generated HTML pages for changes + from jfleck (bug 126945) + +Thu Nov 13 12:44:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/examples/*: added Dodji's example, added output handling + +Thu Nov 13 11:35:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/examples/*: added Aleksey XPath example, fixed bugs + in the indexer + +Wed Nov 12 23:48:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/*: integrating the examples in the navigation menus + * doc/examples/*: added make tests, updated the navigation, + added a new test, cleanups, updates. + +Wed Nov 12 17:50:36 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/*.html: rebuilt the generated HTML pages + * doc/examples/*: updated the stylesheets, added a synopsis, + Makefile.am is now generated by index.py + +Wed Nov 12 01:38:16 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/site.xsl doc/examples/Makefile.am doc/examples/index.html: + added autogeneration of a web page for the examples + * doc/examples/example1.c doc/examples/.cvsignore + doc/examples/examples.xml doc/examples/index.py: updated the + informations extracted, improved the format and indexing. + +Tue Nov 11 22:08:59 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xinclude-test-suite.py: less verbose on difference + * libxml.spec.in: cleanup + * parser.c: fixed xmlCleanupParser() doc + * doc/Makefile.am doc/apibuild.py doc/libxml2-api.xml + doc/examples/Makefile.am doc/examples/example1.c + doc/examples/examples.xml doc/examples/index.py + doc/examples/test1.xml: work on adding C examples and + generating automated information about those. examples.xml + is autogenerated describing the examples. + * example/Makefile.am: cleanup + +Mon Nov 10 23:47:03 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genUnicode.py, xmlunicode.c, include/libxml/xmlunicode.h: + fixed missing '-' in block names, enhanced the hack for + ABI aliasing. + +Sun Nov 9 20:28:21 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genUnicode.py, xmlunicode.c, include/libxml/xmlunicode.h, + python/libxml2class.txt: enhanced for range checking, + updated to Unicode version 4.0.1 (API docs also updated) + * python/generator.py: minor change to fix a warning + +Wed Nov 5 23:46:36 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: apply fix from Karl Eichwalder for script path + +Wed Nov 5 10:49:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js: applied patch from Mark Vakoc to simplify + his work from CVS checkouts. + +Tue Nov 4 21:16:47 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmlreader.html: minor cleanups + +Tue Nov 4 15:52:28 PST 2003 William Brack <wbrack@mmm.com.hk> + + * include/libxml/xmlversion.h.in: changed macro ATTRIBUTE_UNUSED + for gcc so that, if undefined, it's defined as + __attribute__((unused)) + +Tue Nov 4 15:28:07 PST 2003 William Brack <wbrack@mmm.com.hk> + + * python/generator.py: small enhancement to assure ATTRIBUTE_UNUSED + appears after the variable declaration. + * valid.c: trivial change to eliminate a warning message + +Tue Nov 4 11:24:04 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: preparing release 2.6.2, updated and + rebuilt the docs + +Tue Nov 4 09:38:46 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: change --html to make sure we use the HTML serialization + rule by default when HTML parser is used, add --xmlout to allow to + force the XML serializer on HTML. + * HTMLtree.c: ugly tweak to fix the output on <p> element and + solve #125093 + * result/HTML/*: this changes the output of some tests + +Mon Nov 3 17:51:28 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixed bug #125812, about XPointer in XInclude + failing but not returning an error. + +Mon Nov 3 17:18:22 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed bug #125811 related to DTD post validation + where the DTD doesn't pertain to a document. + +Mon Nov 3 15:25:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c xmlIO.c include/libxml/parserInternals.h: implemented + the XML_PARSE_NONET parser option. + * xmllint.c: converted xmllint.c to use the option instead of + relying on the global resolver variable. + +Mon Nov 3 13:26:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c xmlreader.c include/libxml/xinclude.h: adding XInclude + support to the reader interface. Lot of testing of the walker, + various bug fixes. + * xmllint.c: added --walker and made sure --xinclude --stream --debug + works as expected + * Makefile.am result/dtd11.rdr result/ent6.rdr test/dtd11 test/ent6 + result/XInclude/*.rdr: added regression tests for the walker and + XInclude xmlReader support, had to slightly change a couple of tests + because the walker can't distinguish <foo/> from <foo></foo> + +Sat Nov 1 17:42:27 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c nanohttp.c threads.c: second BeOS patch from + Marcin 'Shard' Konicki + +Fri Oct 31 15:35:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: always generate line numbers + +Fri Oct 31 11:53:46 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed another regression introduced in fixing #125823 + +Fri Oct 31 11:33:18 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: previous fix for #124044 was broken, correct + fix provided. + * HTMLparser.c parser.c parserInternals.c xmlIO.c: fix xmlStopParser() + and the error handlers to address #125877 + +Thu Oct 30 23:10:46 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: side effect of #123105 patch, namespace resolution + would fail when defined in internal entities, fixes #125823 + +Thu Oct 30 14:10:42 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: be more defensive in the xmlReader python bindings + fixing bug #124044 + +Thu Oct 30 11:14:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: the a-posteriori DTD validation code was not validating + the namespace declarations, this fixes #124110 + +Wed Oct 29 14:13:03 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlIO.c: enhanced to bypass compression detection code + when input file is stdin (bug 125801) + +Wed Oct 29 18:21:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fix needed when HTTP is not compiled in by Mark Vakoc + +Wed Oct 29 18:05:53 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: more fixes about unregistering objects + * include/libxml/relaxng.h: applied patch from Mark Vakoc + missing _cplusplus processing clause + +Wed Oct 29 07:49:52 2003 Aleksey Sanin <aleksey@aleksey.com> + + * include/libxml/parser.h parser.c: added xmlStrVPrintf function + +Wed Oct 29 14:37:40 CET 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c testThreads.c threads.c: applied patch from + Marcin 'Shard' Konicki to provide BeOS thread support. + +Wed Oct 29 14:20:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/xmlschemas.h: applied patch + from Steve Ball to make a schema parser from a preparsed document. + +Wed Oct 29 13:52:25 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied a couple of patches from Mark Lilback about text + nodes coalescing + +Wed Oct 29 12:16:52 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: change suggested by Anthony Carrico when unregistering + a namespace prefix to a context + * hash.c: be more careful about calling callbacks with NULL payloads. + +Wed Oct 29 00:04:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/*: preparing release 2.6.1, updated and + regenerated docs and APIs + * parser.c: cleanup and last change to fix #123105 + +Tue Oct 28 23:02:29 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: Fix #124907 by simply backporting the same + fix as for the XML parser + * result/HTML/doc3.htm.err: change to ID detecting modified one + test result. + +Tue Oct 28 22:28:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/parser.h: included a new function + to reuse a Push parser context, based on Graham Bennett original + code + * valid.c: in HTML, a name in an input is not an ID + * TODO: bug list update + +Tue Oct 28 19:54:37 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: applied patch from nico@xtradyne.com for #125030 + +Tue Oct 28 16:42:16 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: cleanup + * error.c valid.c include/libxml/xmlerror.h: fixing bug #125653 + sometimes the error handlers can get a parser context on DTD + errors, and sometime they don't. So be very careful when trying + to grab those informations. + +Tue Oct 28 15:26:18 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Kasimier Buchcik which fixes a + problem in xmlSearchNs introduced in 2.6.0 + +Tue Oct 28 14:57:03 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed #123263, the encoding is mandatory in a textdecl. + +Tue Oct 28 13:48:52 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix bug #125047 about serializing when finding a + document fragment node. + +Mon Oct 27 11:11:29 EST 2003 Daniel Veillard <daniel@veillard.com> + + * testSAX.c: fix bug #125592 need a NULL check + * include/libxml/chvalid.h: rename a parameter + +Mon Oct 27 09:43:48 EST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from #123105 about defaulted attributes + from element coming from an entity + +Mon Oct 27 21:12:27 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmllint.c: fixed warning message from IRIX (bug 125182) + * python/libxml.py: removed tabs, replaced with spaces + (bug 125572) + +Mon Oct 27 06:17:30 EST 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.h parserInternals.c xmlIO.c: make sure we report errors + if xmlNewInputFromFile() fails. + * xmlreader.c: avoid using _private for the node or document + elements. + +Sat Oct 25 17:33:59 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/configure.js: added declaration for verMicroSuffix + +Fri Oct 24 23:08:17 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.m4: applied patch from Patrick Welche provided in + bug #125432 , future proofing the .m4 file. + * parser.c: resetting the context should also reset the error + * TODO: problem of conformance w.r.t. E20 was raised in the + XML Core telconf and libxml2 isn't conformant there. + +Wed Oct 22 14:33:05 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlwriter.c: applied patch from Alfred Mickautsch fixing #125180 + +Wed Oct 22 10:50:31 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * chvalid.c genChRanges.py: Stéphane Bidoul pointed out another + small glitch missing a const + +Wed Oct 22 10:43:21 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * chvalid.c genChRanges.py: Stéphane Bidoul pointed out that + it doesn't define IN_LIBXML + +Tue Oct 21 21:14:55 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.mingw: typo pointed out by Stéphane Bidoul + +Tue Oct 21 11:26:36 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.bcb win32/Makefile.mingw win32/Makefile.msvc + win32/configure.js: set of Win32 patches for 2.6.0 by Joachim Bauch + +Tue Oct 21 02:07:22 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: last minute patch from Eric Zurcher making it into 2.6.0 + +Tue Oct 21 02:03:03 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS doc/libxml2.xsa: preparing libxml2-2.6.0 + * doc/*: updated and regenerated the docs and API + +Tue Oct 21 01:01:55 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c error.c tree.c: moved the line number to their proper + field in elements now. + +Tue Oct 21 00:28:20 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in xmlwriter.c Makefile.am include/libxml/xmlwriter.h + include/libxml/Makefile.am include/libxml/xmlversion.h.in: + added the xmlWriter module contributed by Alfred Mickautsch + * include/libxml/tree.h: added room for line and extra information + * xmlreader.c python/tests/reader6.py: bugfixing some problem some + of them introduced in September + * win32/libxml2.def.src doc/libxml2-api.xml: regenerated the API + +Mon Oct 20 19:02:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in xmldwalk.c xmlreader.c + include/libxml/Makefile.am include/libxml/xmldwalk.h + include/libxml/xmlversion.h.in: removing xmldwalk module + since it got merged with the xmlreader. + * parser.c: cleanup + * win32/libxml2.def.src python/libxml2class.txt doc/libxml2-api.xml: + rebuilt the API + * python/tests/Makefile.am python/tests/reader7.py + python/tests/walker.py: adding regression testing for the + new xmlreader APIs, new APIs for reader creation, including + makeing reader "walker" operating on preparsed document trees. + +Sun Oct 20 22:37:03 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * entities.c, valid.c: fixed problem reported on the mailing + list by Melvyn Sopacua - wrong argument order on functions + called through xmlHashScan. + +Sun Oct 19 23:57:45 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c xmlIO.c: fixes for compiling using --with-minimum + +Sun Oct 19 23:46:04 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: cleanup xmlNodeGetContent() reusing xmlNodeBufGetContent(), + tested it through the xslt regression suite. + +Sun Oct 19 22:42:16 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c include/libxml/tree.h: adding xmlNodeBufGetContent() + allowing to grab the content without forcing allocations. + * python/libxml2class.txt doc/libxml2-api.xml: rebuilt the API + * xpath.c xmldwalk.c: removed a couple of comment errors. + +Sun Oct 19 16:39:36 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch from Chris Anderson to change back + memcmp with CMPx() + +Sun Oct 19 16:24:19 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed to not send NULL to %s printing + * python/tests/error.py result/HTML/doc3.htm.err + result/HTML/test3.html.err result/HTML/wired.html.err + result/valid/t8.xml.err result/valid/t8a.xml.err: cleaning + up some of the regression tests error + +Sun Oct 19 15:31:43 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/nanohttp.h include/libxml/parserInternals.h + include/libxml/xmlIO.h nanohttp.c parserInternals.c xmlIO.c: + Fixed the HTTP<->parser interraction, which should fix 2 long + standing bugs #104790 and #124054 , this also fix the fact that + HTTP error code (> 400) should not generate data, we usually + don't want to parse the HTML error information instead of the + resource looked at. + +Sun Oct 19 19:20:48 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/Makefile.am: enhanced the installation of tutorial files + to avoid installing CVS subdirectories (bug 122943) + +Sun Oct 19 17:33:27 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * xmlIO.c: fixed segfault when input file not present + * tree.c: changed output formatting of XML_CDATA_SECTION + (bug 120917) + +Sun Oct 19 00:15:38 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * include/libxml/parserInternals.h HTMLparser.c HTMLtree.c + SAX2.c catalog.c debugXML.c entities.c parser.c relaxng.c + testSAX.c tree.c valid.c xmlschemas.c xmlschemastypes.c + xpath.c: Changed all (?) occurences where validation macros + (IS_xxx) had single-byte arguments to use IS_xxx_CH instead + (e.g. IS_BLANK changed to IS_BLANK_CH). This gets rid of + many warning messages on certain platforms, and also high- + lights places in the library which may need to be enhanced + for proper UTF8 handling. + +Sat Oct 18 20:34:18 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genChRanges.py, chvalid.c, include/libxml/chvalid.h, + doc/apibuild.py: enhanced to include enough comments to + make the api doc generation happy. + +Sat Oct 18 07:28:25 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c xmlIO.c include/libxml/nanohttp.h: starting work + to fix the HTTP/XML parser integration. + +Sat Oct 18 11:04:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h: added new APIs + for creating reader from sources or reusing a reader with + a new source, like the xmlReadxx and xmlCtxtReadxxx + * win32/libxml2.def.src doc/libxml2-api.xml doc/apibuild.py + doc/Makefile.am: regenerated the APIs + * doc/xml.html: applied a patch from Stefan Kost for namesapce docs + +Sat Oct 18 12:46:02 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genChRanges.py, chvalid.c, include/libxml/chvalid.h, + include/libxml/parserInternals.h: enhanced macros to avoid + breaking ABI from previous versions. + * catalog.c, parser.c, tree.c: modified to use IS_* macros + defined in parserInternals.h. Makes maintenance much easier. + * testHTML.c, testSAX.c, python/libxml.c: minor fixes to avoid + compilation warnings + * configuration.in: fixed pushHTML test error; enhanced for + better devel (me) testing + +Fri Oct 17 14:38:54 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * legacy.c: remove the warning for startDocument(), as it is used by + glade (or glade-python) + * parser.c relaxng.c xmlschemastypes.c: fixed an assorted set of + invalid accesses found by running some Python based regression + tests under valgrind. There is still a few leaks reported by the + relaxng regressions which need some attention. + * doc/Makefile.am: fixed a make install problem c.f. #124539 + * include/libxml/parserInternals.h: addition of xmlParserMaxDepth + patch from crutcher + +Wed Oct 15 12:47:33 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: Marc Liyanage pointed out that xmlCleanupParser() + was missing xmlCleanupInputCallbacks and xmlCleanupOutputCallbacks + calls. + +Wed Oct 15 10:16:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * vms/build_libxml.com trionan.c: VMS patch from Craig A. Berry + +Mon Oct 13 21:46:25 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: small fix from Bjorn Reese + +Mon Oct 13 15:59:25 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fix a call missing arguments + +Sun Oct 12 18:42:18 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genChRanges.py, chvalid.c, include/libxml/chvalid.h: fixed + a bug in the range search; enhanced range generation (inline code + if a small number of intervals); enhanced the readability of the + output files. + +Sun Oct 12 00:52:14 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * chvalid.def chvalid.c include/libxml/chvalid.h: rebuilt + chvalid.def from scratch based on XML 2nd edition REC + and regenerated the code. + +Sat Oct 11 22:54:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: removed some annoying warnings + * chvalid.def chvalid.c include/libxml/chvalid.h: fixed a bug + in the PubidChars definition, regenerated, there is still + a bug left somewhere + * genChRanges.py: save the header directly in include/libxml/ + * configure.in: I generated a 2.6.0beta6 earlier today + +Sat Oct 11 23:32:47 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * fixed small error on previous commit (chvalid.h in + base dir instead of include directory) + +Sat Oct 11 23:11:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * genChRange.py, chvalid.def, chvalid.c, include/libxml/chvalid.h: + new files for a different method for doing range validation + of character data. + * Makefile.am, parserInternals.c, include/libxml/Makefile.am, + include/libxml/parserInternals.h: modified for new range method. + * catalog.c: small enhance for warning message (using one + of the new range routines) + +Sat Oct 11 13:24:57 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c include/libxml/valid.h: adding an serror field to + the validation context breaks the ABI for the xmlParserCtxt + structure since it's embedded by content and not by reference + +Sat Oct 11 12:46:49 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in: patch from Mike Hommey + * threads.c: applied Windows patch from Jesse Pelton and Stephane + Bidoul + * parser.c: fix the potentially nasty access to ctxt->serror + without checking first that the SAX block is version 2 + +Fri Oct 10 21:34:01 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fixed a nasty bug with interning some text strings + * configure.in: prepare for beta5 of 2.6.0 + * libxml.h nanoftp.c nanohttp.c xmlIO.c include/libxml/xmlerror.h: + better error handling for I/O and converted FTP and HTTP + * parser.c: fixed another bug + +Fri Oct 10 16:45:20 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fixed uninitialized new field. + * result/VC/OneID2 result/relaxng/*.err: fixed a typo updating + all messages + +Fri Oct 10 16:19:17 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h: make room in Doc, Element, Attributes + for PSVI type informations. + +Fri Oct 10 16:08:02 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c c14n.c catalog.c error.c globals.c parser.c + parserInternals.c relaxng.c valid.c xinclude.c xmlIO.c xmlregexp.c + xmlschemas.c xpath.c xpointer.c include/libxml/globals.h + include/libxml/parser.h include/libxml/valid.h + include/libxml/xmlerror.h: Setting up the framework for structured + error reporting, touches a lot of modules, but little code now + the error handling trail has been cleaned up. + +Fri Oct 10 14:29:42 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * c14n.c include/libxml/xmlerror.h: converted the C14N module too + +Fri Oct 10 13:40:51 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: cleanup + * xpointer.c include/libxml/xmlerror.h: migrated XPointer module + to the new error mechanism + +Fri Oct 10 12:49:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * error.c xmlschemas.c: a bit of cleanup + * result/schemas/*.err: updated with the new result strings + +Fri Oct 10 03:58:39 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * xpath.c: fixed bug 124061 + +Fri Oct 10 02:47:22 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: cleanup + * encoding.c: fix a funny typo + * error.c xmlschemas.c xmlschemastypes.c include/libxml/xmlerror.h: + converted the Schemas code to the new error handling. PITA, + still need to check output from regression tests. + +Thu Oct 9 15:13:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c include/libxml/xmlerror.h: converted too + * tree.c: small cleanup + +Thu Oct 9 13:44:57 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: comment fix + * catalog.c include/libxml/xmlerror.h: migrating the catalog code + to the new infrastructure + +Thu Oct 9 00:36:03 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: final error handling cleanup + * xinclude.c error.c: converted XInclude to the new error handling + * include/libxml/xmlerror.h: added XInclude errors + +Wed Oct 8 23:31:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: bug in compression saving was crashing galeon + reported by teuf + +Wed Oct 8 21:18:12 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * error.c tree.c xmlIO.c xmllint.c: more cleanup through the + I/O error path + +Wed Oct 8 20:57:27 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: better handling of error cases + +Wed Oct 8 13:51:14 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c xmllint.c include/libxml/xmlerror.h: first pass at + cleaning up error handling in the I/O module. + +Wed Oct 8 10:52:05 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c include/libxml/xmlerror.h: error handling + cleanup of the Regexp module. + +Wed Oct 8 01:09:05 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: converting the tree module too + * error.c include/libxml/xmlerror.h: created a simpler internal + error reporting function. + +Tue Oct 7 23:19:39 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * error.c include/libxml/xmlerror.h include/libxml/xpath.h + include/libxml/xpathInternals.h xpath.c: cleaning up XPath + error reporting that time. + * threads.c: applied the two patches for TLS threads + on Windows from Jesse Pelton + * parser.c: tiny safety patch for xmlStrPrintf() make sure the + return is always zero terminated. Should also help detecting + passing wrong buffer size easilly. + * result/VC/* result/valid/rss.xml.err result/valid/xlink.xml.err: + updated the results to follow the errors string generated by + last commit. + +Tue Oct 7 14:16:45 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c include/libxml/xmlerror.h: last cleanup of error + handling in the Relax-NG module. + +Tue Oct 7 13:30:39 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * error.c relaxng.c include/libxml/xmlerror.h: switched Relax-NG + module to teh new error reporting. Better default report, adds + the element associated if found, context and node are included + in the xmlError + * python/tests/reader2.py: the error messages changed. + * result/relaxng/*: error message changed too. + +Mon Oct 6 10:46:35 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.bcb win32/Makefile.mingw win32/Makefile.msvc + win32/configure.js: applied patch from Stéphane Bidoul to + fix the compilation of 2.6.0 code on Win32 + +Mon Oct 6 10:16:30 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: fixing the script + * parser.c: replace sequences of RAW && NXT(.) == '.' with + memcmp calls, seems to not break conformance, slightly inflate + the size of the gcc generated code though. + +Sun Oct 5 23:30:48 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c parser.c valid.c include/libxml/parserInternals.h: + more cleanup of error handling in parserInternals, sharing the + routine for memory errors. + +Sun Oct 5 15:49:14 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c Makefile.am legacy.c parser.c parserInternals.c + include/libxml/xmlerror.h: more code cleanup, especially around + error messages, the HTML parser has now been upgraded to the new + handling. + * result/HTML/*: a few changes in the resulting error messages + +Sat Oct 4 23:06:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/xmlerror.h: more error/warning + handling cleanups, the XML parser module should be okay now. + +Sat Oct 4 01:58:27 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in xmldwalk.c include/libxml/Makefile.am + include/libxml/xmldwalk.h include/libxml/xmlversion.h.in: + integrated the xmlDocWalker API given by Alfred Mickautsch, + and providing an xmlReader like API but working on a xmlDocPtr. + +Sat Oct 4 00:18:29 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: more cleanup in make tests + * error.c valid.c parser.c include/libxml/xmlerror.h: more work + in the transition to the new error reporting strategy. + * python/tests/reader2.py result/VC/* result/valid/*: + few changes in the strings generated by the validation output + +Fri Oct 3 00:19:02 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: changed 'make tests' to use a concise output, + scrolling to see where thing broke wasn't pleasant + * configure.in: some beta4 preparation, but not ready yet + * error.c globals.c include/libxml/globals.h include/libxml/xmlerror.h: + new error handling code, last error informations are stored + in the parsing context or a global variable, new APIs to + handle the xmlErrorPtr type. + * parser.c parserInternals.c valid.c : started migrating to the + new error handling code, it's a royal pain. + * include/libxml/parser.h include/libxml/parserInternals.h: + moved the definition of xmlNewParserCtxt() + * parser.c: small potential buffer access problem in push code + provided by Justin Fletcher + * result/*.sax result/VC/PENesting* result/namespaces/* + result/valid/*.err: some error messages were sligthly changed. + +Thu Oct 2 13:01:13 2003 Aleksey Sanin <aleksey@aleksey.com> + + * include/libxml/parser.h parser.c: introduced xmlStrPrintf + function (wrapper around snprintf) + +Wed Oct 1 21:12:06 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c: Fix error on output of high codepoint charref like +  , reported by Eric Hanchrow + +Wed Oct 1 14:20:10 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c include/libxml/DOCBparser.h: let's see how much + of a pain murrayc is really gonna be. + +Wed Oct 1 11:03:40 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: Applied fix for bug #123481 reported by Peter Derr + +Tue Sep 30 15:34:31 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c legacy.c parser.c: made the predefined entities + static predefined structures to avoid the work, memory and + hazards associated to initialization/cleanup. + +Tue Sep 30 14:30:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c Makefile.am configure.in legacy.c parser.c + parserInternals.c testHTML.c xmllint.c include/libxml/HTMLparser.h + include/libxml/parser.h include/libxml/parserInternals.h + include/libxml/xmlversion.h.in: added a new configure + option --with-push, some cleanups, chased code size anomalies. + Now a library configured --with-minimum is around 150KB, + sounds good enough. + +Tue Sep 30 12:31:00 AEST 2003 Malcolm Tredinnick <malcolm@commsecure.com.au> + + * libxml-2.0-uninstalled.pc.in: New file for building against + uninstalled libxml2 builds. + * configure.in, Makefile.am: Support the *-uninstalled.pc file. + * .cvsignore: Ignore the new generated *.pc file. + +Tue Sep 30 02:38:16 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am SAX.c SAX2.c configure.in globals.c parser.c + parserInternals.c testReader.c testSAX.c xmlIO.c xmllint.c + xmlreader.c example/gjobread.c include/libxml/xmlversion.h.in: + added 2 new configure option: --with-reader --with-sax1 + to allow removing the reader or non-xmlReadxxx() interfaces. + +Mon Sep 29 19:58:26 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in entities.c tree.c valid.c xmllint.c + include/libxml/tree.h include/libxml/xmlversion.h.in: + Adding a configure option to remove tree manipulation + code which is not strictly needed by the parser. + +Mon Sep 29 15:23:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c: last finishing touch to the BeOS + patch from Marcin 'Shard' Konicki + +Mon Sep 29 15:15:08 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c SAX2.c c14n.c catalog.c configure.in debugXML.c + encoding.c entities.c nanoftp.c nanohttp.c parser.c relaxng.c + testAutomata.c testC14N.c testHTML.c testRegexp.c testRelax.c + testSchemas.c testXPath.c threads.c tree.c valid.c xmlIO.c + xmlcatalog.c xmllint.c xmlmemory.c xmlreader.c xmlschemas.c + example/gjobread.c include/libxml/HTMLtree.h include/libxml/c14n.h + include/libxml/catalog.h include/libxml/debugXML.h + include/libxml/entities.h include/libxml/nanohttp.h + include/libxml/relaxng.h include/libxml/tree.h + include/libxml/valid.h include/libxml/xmlIO.h + include/libxml/xmlschemas.h include/libxml/xmlversion.h.in + include/libxml/xpathInternals.h python/libxml.c: + Okay this is scary but it is just adding a configure option + to disable output, this touches most of the files. + +Mon Sep 29 12:53:56 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: better fix, avoids breaking the python bindings + +Mon Sep 29 11:21:33 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: fix a compilation problem when configuring + with debug but without mem-debug + +Sun Sep 28 20:53:17 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: cleanup, creating a new legacy.c module, + made sure make tests ran in reduced conditions + * SAX.c SAX2.c configure.in entities.c globals.c parser.c + parserInternals.c tree.c valid.c xlink.c xmlIO.c xmlcatalog.c + xmlmemory.c xpath.c xmlmemory.c include/libxml/xmlversion.h.in: + increased the modularization, allow to configure out + validation code and legacy code, added a configuration + option --with-minimum compiling only the mandatory code + which then shrink to 200KB. + +Sun Sep 28 02:15:07 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix a bug raised by the Mips compiler. + * include/libxml/SAX.h include/libxml/parser.h: move the + SAXv1 block definitions to parser.h fixes bug #123380 + * xmlreader.c include/libxml/xmlreader.h: reinstanciate + the attribute and element pool borken 2 commits ago. + Start playing with an entry point to preserve a subtree. + * entities.c: remove a warning. + +Sat Sep 27 12:19:38 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * encoding.c, parser.c, relaxng.c: further (final?) minor + changes for compilation warnings. No change to logic. + +Fri Sep 26 18:03:42 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * parser.c: fixed small problem with missing entities (test/ent2) + +Sat Sep 27 01:25:39 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: William's change allowed to spot a nasty bug in xmlDoRead + if the result is not well formed that ctxt->myDoc is not NULL + and uses the context dictionnary. + +Fri Sep 26 21:09:34 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: other patches from William Brack to avoid + compilation warnings on AIX. + +Fri Sep 26 11:03:08 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c, entities.c, xmlreader.c: minor change to + avoid compilation warnings on some (e.g. AIX) systems + +Fri Sep 26 16:49:25 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fixed a backward compatibility problem + when formatting "deprecated SAXv1 function ignorableWhitespace" + could be reproduced by xmllint --format + +Fri Sep 26 15:50:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/libxml2-api.xml: rebuilt the API + * xmllint.c doc/xmllint.1 doc/xmllint.xml: added the new options + --nocdata and --nsclean to remove CDATA section and surperfluous + namespace declarations + * parser.c SAX2.c: implementation of the 2 new options + +Fri Sep 26 14:41:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c testHTML.c xmllint.c include/libxml/HTMLparser.h: + added the same htmlRead APIs than their XML counterparts + * include/libxml/parser.h: new parser options, not yet implemented, + added an options field to the context. + * tree.c: patch from Shaun McCance to fix bug #123238 when ]]> + is found within a cdata section. + * result/noent/cdata2 result/cdata2 result/cdata2.rdr + result/cdata2.sax test/cdata2: add one more cdata test + +Thu Sep 25 23:03:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c xmllint.c doc/libxml2-api.xml include/libxml/parser.h: + Changed the new xmlRead/xmlCtxtRead APIs to have an extra + base URL parameter when not loading from a file or URL. + +Thu Sep 25 16:23:58 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing a beta3 solving the ABI problems + * globals.c parser.c parserInternals.c testHTML.c HTMLparser.c SAX.c + include/libxml/globals.h include/libxml/SAX.h: make sure the + global variables for the default SAX handler are V1 ones to + avoid ABI compat problems. + * xmlreader.c: cleanup of uneeded code + * hash.c: fix a comment + +Thu Sep 25 14:16:51 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c hash.c parser.c include/libxml/xmlexports.h + include/libxml/xmlmemory.h include/libxml/xmlversion.h.in: + fixing some comments to avoid warnings from apibuild.py + +Wed Sep 24 23:42:08 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js: patch from Stéphane Bidoul for configuring + the beta2 version #123104 + +Wed Sep 24 23:17:59 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: adding repeated parsing and validating tests + * SAX2.c parser.c tree.c include/libxml/parser.h: make the new + DOM tree building interfaces use the dictionary from the + parsing context to build the element and attributes names + as well as formatting spaces and short text nodes + * include/libxml/dict.h dict.c: added some reference counting + for xmlDictPtr because they can be shared by documents and + a parser context. + * xmlreader.c: a bit of cleanup, remove the specific tree freeing + functions and use the standard ones now. + * xmllint.c: add --nodict + * python/libxml.c: fix a stupid bug so that ns() works on + attribute nodes. + +Tue Sep 23 23:07:45 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/parser.h: adding a new set of + API for parsing xmlReadDoc() xmlReadFile() ... xmlReadIO() + and xmlCtxtReadDoc() ... xmlCtxtReadIO(). That with + a clear define of xmlParserOption, xmlCtxtUseOptions() + should simplify custom parsing without being tempted to + use global variables, and xmlCtxtReset() should allow reuse + of a context for multiple parsing. + * xmllint.c: switched to use xmlReadXXX, allow options to + be used simultaneously with less troubles. + * tree.c: simple warning removal + * doc/apibuild.py: small fix + * doc/libxml2-api.xml win32/libxml2.def.src: updated + +Tue Sep 23 11:15:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: revert xmlCreateDocParserCtxt() since this break + the parseDoc() python bindings + +Tue Sep 23 11:00:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: make sure xmlDetectSAX2() is called only at + parsing time to avoid breaking apps changing the SAX + callbacks after context allocation, change xmlCreateDocParserCtxt() + to use an immutable buffer instead of a copy + +Tue Sep 23 09:40:33 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied patch from Markus Keim fixing a problem + with I/O callback registration. + * include/libxml/xmlerror.h: fixed #122994 comment numbering + for xmlParserErrors + +Mon Sep 22 12:21:11 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c include/libxml/tree.h: the uri arg to xmlNodeSetBase is + really a const xmlChar* + * xmlreader.c include/libxml/xmlreader.h: addin the + xmlTextReaderConstString() to get an interned string from + the reader + +Sun Sep 20 17:22:20 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * error.c: fixed a warning message (trivial) + * doc/search.php: removed incorrect warning message when word + search not found in last of multiple tables (bug 119535) + +Fri Sep 19 14:26:28 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing a 2.6.0-beta2 release + * xmlIO.c: avoid a warning + * tree.c: avoid duplicate code in xmlReplaceNode as pointed out + by Chris Ryland + * include/libxml/dict.h: add a QName access lookup to the + dictionary. + * xmlreader.c include/libxml/xmlreader.h: adding const access + based on the dictionary interface for string read from the + reader, the node content access is still TODO, it's too different + +Fri Sep 19 00:01:08 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fixing namespace DTD validations + * result/valid/ns2.xml result/valid/ns.xml: the output of defaulted + namespaces is slightly different now. + * Makefile.am: report the memory used in Timingtests (as well as time) + +Thu Sep 18 15:29:46 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: add streaming on memory regression tests, found + bad bugs in the reader interface + * xmlreader.c: fixing bugs w.r.t. very large names, and special + condition in end of file. + * xmlIO.c tree.c include/libxml/tree.h include/libxml/xmlIO.h: + adding immutable buffers, and parser input based on those, + but this should not be used (yet) for general parsing + * parser.c: added a comment about using immutable buffers for + general parsing. + * result/bigname.xml.rdr result/bigname2.xml.rdr: fixing the + output of the regression tests + * xmllint.c: using the immutable buffers when streaming on + mmaped file (--stream --memory) + +Thu Sep 18 12:04:50 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c: the last patch broke unicity of returned strings, removed + +Thu Sep 18 00:31:02 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: add a Timingtests target to check bad behaviour + from the streaming engine + * dbgen.pl dbgenattr.pl: perl script to generate big instances + * xmlreader.c: fix a bad behaviour on large buffer inputs + +Wed Sep 17 23:25:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c xmlreader.c: two small improvements + +Wed Sep 17 22:53:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: avoid a leak with previous patch + +Wed Sep 17 22:06:11 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: use stderr and not stdout for default errors + in python environment bug #122552 + +Wed Sep 17 21:33:57 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: small fix from Rob Richards for input filename + * xmllint.c: fixes for --repeat and --memory/--stream for speed tests + * xmlIO: adding a guard in one function + +Wed Sep 17 15:57:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c xmlreader.c include/libxml/parser.h: more performance hunting + reducing memory allocation and free and avoiding expensive routines + +Wed Sep 17 12:23:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c parser.c parserInternals.c xmlreader.c: started messing + seriously with per-document dict and element and attribute nodes + reuse in the xmlReader. This seems to lead to an interesting + speedup of the xmlReader already. + +Wed Sep 17 01:07:56 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c include/libxml/dict.h: do string allocations in large + pools, allowing to find if a string pertain to a dict quickly + * xmllint.c: fix --stream --repeat --timing + * Makefile.am: the testThreads run output should be seen. + +Mon Sep 15 16:46:28 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c include/libxml/parser.h: starting work on reusing the + parser dictionary for the element and attribute tag names. + Add pools for Element and Attributes in the parser context, + which should help speeding up the reader. + * Makefile.am result/*.rdr : adding non-python reader regression + tests. + +Mon Sep 15 14:54:42 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c parser.c valid.c: starting to cleanup some of the + problems exposed by the W3C/NIST regression suite. + * result/ent7.sax result/xml2.sax: small fixes. + +Mon Sep 15 11:46:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: more parser error factoring + +Sun Sep 14 21:53:39 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * HTMLtree.c: Fixed bug 121394 - missing ns on attributes + +Sun Sep 14 21:43:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/xmlerror.h: factoring of more + error handling code, serious size reduction and more lisibility + of the resulting code. + * parserInternals.c parser.c include/libxml/parserInternals.h + include/libxml/parser.h: changing the way VC:Proper Group/PE Nesting + checks are done, use a counter for entities. Entities where freed and + reallocated at the same address failing the check. + * tree.c: avoid a warning + * result/valid/* result/VC/*: this slightly changes some validation + error messages. + +Sun Sep 14 11:03:27 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * valid.c: fixed bug 121759 - early declaration of + attribute-list in external DTD + +Sat Sep 13 14:42:11 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/xmlerror.h: starting cleaning up + error handling, factorize error processing + * doc/xmllint.html: update of the page, remove --sgml + +Sat Sep 13 02:13:50 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am DOCBparser.c parserInternals.c testDocbook.c + xmllint.c doc/xmllint.xml doc/xmllint.1: removing the + broken pseudo SGML DocBook parser code. + +Fri Sep 12 17:24:11 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fix a problem with strcpy() in xmlXPathFormatNumber() + valgrind pointed out the strings overlapped. cleanup . + +Fri Sep 12 11:43:12 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied speedup to xmlSearchNs() as suggested by + Luca Padovani. Cleaned up xmlSearchNsByHref() in the process + applying the same trick. + +Fri Sep 12 01:36:20 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c parserInternals.c tree.c include/libxml/parser.h + include/libxml/xmlerror.h: adding namespace checkings + while making sure they still parse as wellformed documents. + Add an nsWellFormed status report to the context, and + provide new appropriate error codes. + * Makefile.am result/namespaces/* test/namespaces/*: add + specific regression testing for the new namespace support + * test/att5 result/noent/att5 result/att5 result/att5.sax: + add more coverage for the attribute parsing and normalization + code. + +Fri Sep 12 01:34:19 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * threads.c: backport of a thread bugfix from 2_5_X branch + +Thu Sep 11 18:29:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a bug in one corner case of attribute parsing. + +Thu Sep 11 16:21:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* : 2.6.0beta1 changes + * SAX2.c hash.c parser.c parserInternals.c: Fixing attribute + normalization, might not be totally fixed but this should + make sure SAX event provide the right strings for attributes + except entities for which libxml2 is different by default + This should fix #109564 + * result/attrib.xml.sax result/ent3.sax result/p3p.sax: minor changes + in attribute callback values + * result/c14n/with-comments/example-4 + result/c14n/without-comments/example-4: this also fixes a subtle + bug in the canonicalization tests. + +Wed Sep 10 12:38:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + Time to commit 3 days of work rewriting the parser internal, + fixing bugs and migrating to SAX2 interface by default. There + is some work letf TODO, like namespace validation and attributes + normalization (this break C14N right now) + * Makefile.am: fixed the test rules + * include/libxml/SAX2.h include/libxml/parser.h + include/libxml/parserInternals.h SAX2.c parser.c + parserInternals.c: changing the parser, migrating to SAX2, + adding new interface to switch back to SAX1 or initialize a + SAX block for v1 or v2. Most of the namespace work is done + below SAX, as well as attribute defaulting + * globals.c: changed initialization of the default SAX handlers + * hash.c tree.c include/libxml/hash.h: added QName specific handling + * xmlIO.c: small fix + * xmllint.c testSAX.c: provide a --sax1 switch to test the old + version code path + * result/p3p result/p3p.sax result/noent/p3p test/p3p: the new code + pointed out a typo in a very old test namespace + +Sun Sep 7 19:58:33 PTD 2003 William Brack <wbrack@mmm.com.hk> + + * xmlIO.c include/libxml/xmlIO.h parser.c: Implemented detection + of compressed files, setting doc->compressed appropriately + (bug #120503). + +Sun Sep 7 22:53:06 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: try to cope with the fact that apps may still + have allocated smaller SAX callbak block + +Sun Sep 7 11:11:45 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c: allow to give -1 for undefined length in lookups + * include/libxml/parser.h parser.c parserInternals.c testSAX.c: + first round of work on the new SAX2 interfaces, the API + will change but commiting before changing for historical + reference. + +Sat Sep 6 10:55:01 PTD 2003 William Brack <wbrack@mmm.com.hk> + + * SAX2.c, xmlIO.c: fixed bug #121210 (callback to sax->error, + sax->warning with wrong params). + +Fri Sep 5 10:33:42 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/globals.h: patch from Stéphane Bidoul to export + globals entry points to the python bindings + +Wed Sep 3 15:24:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: when creating a DOCTYPE use "html" lowercase + by default instead of "HTML" + * parser.c xmlreader.c: optimization, gain a few % parsing speed by + avoiding calls to "areBlanks" when not needed. + * include/libxml/parser.h include/libxml/tree.h: some structure + extensions for future work on using per-document dictionaries. + +Wed Sep 3 15:08:06 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am results/*.sax SAXResult/*: removing the SAXresults + tree, keeping result in the same tree, added SAXtests to the + default "make tests" + +Tue Sep 2 15:59:04 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/xmlexports.h: defined additional macros which + affect exports and added mingw section + +Mon Sep 1 15:15:18 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/index.py: fixed problem parsing xhtml docs + * doc/xmlreader.html,doc/guidelines.html: small modification + to avoid problem in python parsing. + * doc/search.php: fixed upper case filename problem for XSLT docs + +Mon Sep 1 22:55:09 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: patch from Mark Vakoc that allows compiling + with XInclude but without XPointer support. + +Mon Sep 1 22:31:38 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in xml2-config.in: Applied a patch from Kevin P. Fleming + to add --libtool-libs option to xml2-config script. + +Sun Aug 31 21:52:12 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/README.docs, doc/Makefile.am: new file added, + giving some description of the documentation generation process + * doc/search.php: fixed problem with upper case on filenames + +Fri Aug 29 12:25:01 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.bcb: updates by Eric Zurcher + +Thu Aug 28 22:58:38 PDT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/apibuild.py, doc/libxml2-api.xml: enhanced code + to compensate for pollution from Igor's header taint + (quick before Daniel notices) + +Thu Aug 28 23:01:36 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX2.c: fixed a namespace error on attribute reporting bug + pointed out by Tobias Reif + * test/p3p result/p3p result/noent/p3p: this test case was wrong + using xmlsn instead of xmlns... + +Thu Aug 28 18:25:07 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/globals.h include/libxml/xmlexports.h: fixed + typos reported by Mark Vakoc + +Thu Aug 28 08:59:51 MDT 2003 John Fleck <jfleck@inkstain.net> + + add: + * doc/tutorial/api.html + * doc/tutorial/ar01s09.html + * doc/tutorial/includexpath.c + updated + * doc/tutorial/*.html + fix my bad - forgot to check in new files when I last + updated + +Thu Aug 28 14:31:13 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.bcb: new file, support for Borland C++ + * xmllint.c: fixed time inclusion for various compilers + +Thu Aug 28 12:32:59 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * parser.c parserInternals.c DOCBparser.c HTMLparser.c: added + few casts to shut the compiler warnings + +Thu Aug 28 12:23:51 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.* win32/configure.js: fixed for mingw + +Thu Aug 28 10:01:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c threads.c: fixing bug #120870 try to avoid problem + with uninitialized mutexes + +Wed Aug 27 16:12:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed an error reporting bug in Relax-NG when we end + up with multiple states, select the "best" one. Fix #120682 + * result/relaxng/tutor11_2_3.err: small change resulting + +Wed Aug 27 11:25:25 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: applied base64 support patch from Anthony Carrico + +Wed Aug 27 10:58:51 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/[threads-xpointer].h: realigned parameters + after taint + +Wed Aug 27 09:59:54 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/xmlexports.h: fixed defs for Borland compiler, + as reported by Eric Zurcher + +Tue Aug 26 15:54:04 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed bug #120386 again a problem introduced when + trying to reuse automata for content validation. Fix a bug report + problem on zeroOrMore + * result/relaxng/tutor3_7_err: change slightly error reporting. + +Mon Aug 25 13:24:57 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/Makefile.am: make sure the new header will + be included when generating a new distribution. + +Mon Aug 25 12:37:05 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed a couple of stupid bugs in the state allocation + routines which led to bug #120040 and the ones reported by + Martijn Faassen + +Mon Aug 25 12:37:23 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/parserInternals.h include/libxml/relaxng.h + include/libxml/SAX.h include/libxml/SAX2.h: realigned the + parameters after taint. + +Mon Aug 25 11:16:01 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/xmlversion.h.in: moved export defs to a separate + file for consistency. + * include/libxml/xmlexports.h: new file, contains export defs. + +Mon Aug 25 11:01:49 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * include/libxml/*.h genUnicode.py: exportability taint + of the headers. + +Thu Aug 21 12:37:46 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: make the deprecated interfaces log an error message + to be sure it won't get used. + +Thu Aug 21 00:50:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am SAX2.c include/libxml/Makefile.am include/libxml/SAX2.h: + Adding new version of the SAX interface, it's not there yet, + currently just preparing the work + * globals.c parser.c SAX.c include/libxml/SAX.h + include/libxml/globals.h include/libxml/parser.h: doing some + refactoring of the SAXv1 interfaces, obsoleting a bunch of them + while keeping functionalities, preparing SAX2 integration. + * dict.c: small cleanup. + +Wed Aug 20 00:20:01 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixes a small bug introduced in last commit and detected + by valgrind. + +Tue Aug 19 16:54:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c hash.c: optimization when freeing hash tables. + * parser.c xmlIO.c include/libxml/tree.h: some tuning of buffer + allocations + * parser.c parserInternals.c include/libxml/parser.h: keep a + single allocated block for all the attributes callbacks, + avoid useless malloc()/free() + * tree.c: do not realloc() when growing a buffer if the buffer + ain't full, malloc/memcpy/free avoid copying memory. + +Mon Aug 18 18:37:01 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c doc/xmllint.xml doc/xmllint.1: added option + --dtdvalidfpi for Tobias Reif + +Mon Aug 18 14:03:03 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * dict.c include/libxml/dict.h Makefile.am include/libxml/Makefile.am: + new dictionary module to keep a single instance of the names used + by the parser + * DOCBparser.c HTMLparser.c parser.c parserInternals.c valid.c: + switched all parsers to use the dictionary internally + * include/libxml/HTMLparser.h include/libxml/parser.h + include/libxml/parserInternals.h include/libxml/valid.h: + Some of the interfaces changed as a result to receive or return + "const xmlChar *" instead of "xmlChar *", this is either + insignificant from an user point of view or when the returning + value changed, those function are really parser internal methods + that no user code should really change + * doc/libxml2-api.xml doc/html/*: the API interface changed and + the docs were regenerated + +Sun Aug 17 23:05:38 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied patch to xmlCleanupParser from Dave Beckett + +Sat Aug 16 22:53:42 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/parsedecl.py, doc/libxml2-refs.xml, doc/API*.html: + fixed part (2) of bug 119535 (wrong alpha case on filenames) + +Sat Aug 16 20:35:28 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/API*.html, doc/html/*: regenerated API documentation + for xmlsoft.org (part of Bug 119535) + +Fri Aug 15 14:58:37 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * encoding.c, threads.c, include/libxml/HTMLparser.h, + doc/libxml2-api.xml: Minor changes to comments, etc. for + improving documentation generation + * doc/Makefile.am: further adjustment to auto-generation of + win32/libxml2.def.src + +Fri Aug 15 02:24:20 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * News configure.in: preparing libxml2-2.5.10 release + * doc/* : updated the doc and rebuilt + +Fri Aug 15 01:55:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing the xmlSAXParseDTD bug #119536 raised by + Malcolm Tredinnick with the patch he suggested. + +Fri Aug 15 01:37:10 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: allocation error #119784 raised by Oliver Stoeneberg + +Fri Aug 15 00:41:58 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * uri.c: fixing an use of strcpy() where both strings overlap + pointed out by valgrind. + +Thu Aug 14 17:10:39 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c globals.c include/libxml/xmlmemory.h: get rid of + some compilation warnings. + * xinclude.c: fix the performance problem reported by Kevin Ruscoe + plus some cleanup and better error reporting. + +Thu Aug 14 14:13:43 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c: applied UTF-16 encoding handling patch provided by + Mark Itzcovitz + * encoding.c parser.c: more cleanup and fixes for UTF-16 when + not having iconv support. + +Thu Aug 14 03:19:08 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in example/Makefile.am libxml.h nanoftp.c + nanohttp.c xmllint.c: Applied patch from Mikhail Grushinskiy for + mingw compiler on Windows. + +Thu Aug 14 02:28:36 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed the serious CPU usage problem reported by + Grant Goodale + * HTMLparser.c: applied patch from Oliver Stoeneberg about a free + missing in htmlSAXParseDoc + +Tue Aug 12 22:48:10 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * doc/Makefile.am: Removed dependency from libxml2.def.src + +Tue Aug 12 18:55:08 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * autogen.sh: took away the requirement for automake-1.4, + changed the messages for getting auto* tools to current + gnu pages. + * configure.in: added check for Linux Dec alpha requiring + -ieee flag, fixed test for ipv6 + * trionan.c: fixed problem for compiling on Linux Dec alpha + using native compiler + * doc/Makefile.am: implemented regeneration of win32/libxml2.def.src + whenever libxml2-api.xml is changed. + +Mon Aug 11 17:02:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: cleaning up a problem when parsing UTF-16 and libiconv + is not used. + +Sun Aug 10 08:13:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * win32/libxml2.def.src: renerated with fixed libxml2-api.xml + +Sun Aug 10 00:22:55 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * News configure.in: preparing libxml2-2.5.9 release + * doc/* : updated the doc and rebuilt + +Sat Aug 9 20:00:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlreader.h doc/libxml2-api.xml: changing an enum + definition to get a correct API XML description. This was apparently + breaking Windows build. + +Sat Aug 9 13:41:21 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed a nasty bug #119387, bad heuristic from + the progressive HTML parser front-end on large character data + island leading to an erroneous end of data detection by the + parser. Some cleanup too to get closer from the XML progressive + parser. + +Sat Aug 9 00:42:47 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * win32/configure.js: Added in support for the ISO8859X + module (patch provided by Jesse Pelton) + +Fri Aug 8 15:56:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c tree.c threads.c: hum try to avoid some troubles + when the library is not initialized and one try to save, the + locks in threaded env might not been initialized, playing safe + * xmlschemastypes.c: apply patch for hexBinary from Charles Bozeman + * test/schemas/hexbinary_* result/schemas/hexbinary_*: also added + his tests to the regression suite. + +Fri Aug 8 18:47:38 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * win32/defgen.xsl, win32/libxml2.def.src: Bug 119343 + (with apologies to Igor) - Enhanced handling of docb and + nanohttp. + +Thu Aug 7 21:13:22 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * encoding.c: further small changes for warnings when + configured with --with-iconv=no + +Wed Aug 6 12:32:11 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * error.c trionan.[ch] testThreads.c python/generator.py: + further small changes to elminate most of the remaining + warnings. + +Tue Aug 5 23:51:21 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * error.c HTMLparser.c testC14N.c testHTML.c testURI.c + xmlcatalog.c xmlmemory.c xmlreader.c xmlschemastypes.c + python/libxml.c include/libxml/xmlmemory.h: small changes + to syntax to get rid of compiler warnings. No changes + to logic. + +Mon Aug 4 22:40:54 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/libxml2-api.xml doc/html/*: rebuilt the API and docs. + +Mon Aug 4 21:40:34 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed a small problem in the patch for #118763 + * result/HTML/doc3.htm*: this reverts back to the previous result + +Sun Aug 3 21:41:49 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * doc/FAQ.html doc/xml.html: applied doc patch to xml.html + and rebuilt, apparently some C++ wrappers are not available, + c.f. bug #118943 + +Sun Aug 3 21:30:31 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixing HTML attribute serialization bug #118763 + applying a modified version of the patch from Bacek + * result/HTML/doc3.htm*: this modifies the output from one test + +Sun Aug 3 21:02:30 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c include/libxml/tree.h: added a new API to split a + QName without generating any memory allocation + * valid.c: fixed another problem with namespaces on element + in mixed content case + * python/tests/reader2.py: updated the testcase with + Bjorn Reese fix to reader for unsignificant white space + * parser.c HTMLparser.c: cleanup. + +Sun Aug 3 20:55:40 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * catalog.c: trying to fix #118754 of possible recursion in the + catalogs. Not fantastically happy about the current fix since + it's likely to break under very thread intensive concurrent + access to the catalog. Better solution might to keep the depth + an extra argument to the resolution functions. + +Sun Aug 3 18:56:54 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed bug #118712 about mixed content, and namespaced + element names. + * test/valid/mixed_ns.xml result/valid/mixed_ns*: added a check + in the regression tests + +Fri Aug 1 23:55:23 HKT 2003 William Brack <wbrack@mmm.com.hk> + + Coninuing work on bug 118559 + * DOCBparser.c: removed 2 unsed vars + * xmlregexp.c: changed some numeric const to their enum symbols + * xmlreader.c: changed one var define from int to enum + (a little more to be done, awaiting co-ordination) + * relaxng.c: deleted one unused var + * xmllint.c: deleted some unused vars, changed one arg + val from int to enum + * testHTML.c, testDocbook.c: changed some arg vals to enum const + * xmlIO.c: fixed typo from last night (small warning msg) + +Thu Jul 31 22:44:33 HKT 2003 William Brack <wbrack@mmm.com.hk> + + Working on bug 118559 + * error.c: deleted unused variable + * parserInternals.c: deleted unneeded 'const' qualifier + * parser.c: changed variable type for enum temp storage + * xmlIO.c: changed debugging var to be inside #ifdef + * valid.c: removed unused variable + * HTMLparser.c: removed some unneeded 'const' qualifiers + * xpath.c: added some type casts, removed some unused vars + * xinclude.c: added one type cast + * nanohttp.c: repositioned some #ifdef to avoid unused var + * nanoftp.c: removed unused var + +Wed Jul 30 14:57:55 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied a patch from William Brack about + the problem of parsing very large HTML instance with comments + as raised by Nick Kew + +Wed Jul 30 12:29:38 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h: applying cleanup + patch from Bjorn Reese for xmlTextReaderNodeType() and + significant whitespace. There is an enum for node type + values now. + +Wed Jul 30 11:08:21 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c: applying patch from Peter Jacobi to added + ISO-8859-x encoding support when iconv is not available + * configure.in include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h.in: added the glue needed + at the configure level and made it the default for Windows + +Tue Jul 29 16:43:48 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml2class.txt: + patch from Joachim Bauch + cleanup for Relax NG error callbacks + in python + +Tue Jul 29 12:46:08 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c parserInternals.c tree.c: applied Peter Jacobi encoding + cleanup patch, and also avoided a possible memory leak + +Tue Jul 29 09:28:09 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fix the previous commit + +Tue Jul 29 12:28:17 HKT 2003 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c: fixed problem with comments reported by Nick Kew + * encoding.c: added routines xmlUTF8Size and xmlUTF8Charcmp for + some future cleanup of UTF8 handling + +Mon Jul 28 16:39:14 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: applied a change suggested by Sean Griffin in bug + #118494 about a memory leak in EXSLT + +Sun Jul 27 14:30:56 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed a Relax-NG compilation/streaming bug introduced + when fixing the previous Relax-NG bugs + * result/relaxng/*: This slightly changes the output messages of + some regression tests. + * configure.in: added support of -with-fexceptions for nested C++ + support. + +Thu Jul 24 15:46:02 MDT 2003 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/apa.html + * doc/tutorial/apb.html + * doc/tutorial/apc.html + * doc/tutorial/apd.html + * doc/tutorial/ape.html + * doc/tutorial/apf.html + * doc/tutorial/apg.html + * doc/tutorial/aph.html + * doc/tutorial/ar01s02.html + * doc/tutorial/ar01s03.html + * doc/tutorial/ar01s04.html + * doc/tutorial/ar01s05.html + * doc/tutorial/ar01s06.html + * doc/tutorial/ar01s07.html + * doc/tutorial/ar01s08.html + * doc/tutorial/index.html + * doc/tutorial/ix01.html + * doc/tutorial/xmltutorial.pdf + * doc/tutorial/xmltutorial.xml + update tutorial with XPath example + +Thu Jul 24 17:07:06 IST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c parser.c: fixing a bug about a special case of namespace + handling, this closes bug #116841 + +Wed Jul 23 20:52:36 IST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c result/relaxng/*: checked and fixed the compilation + of RNG schemas, fixes a couple of bugs #117097 and #117001 . + This slightly changes the output messages of some regression tests. + +Wed Jul 23 15:15:08 IST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed an out of bound error #118052 , the good + part if that base64 code was not in use yet ... + +Tue Jul 22 19:42:15 MDT 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.html + include html version of the xmllint man page, so an + up-to-date version is visible on the Web + +Mon Jul 21 21:53:43 IST 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c include/libxml/xinclude.h: added a new API + xmlXIncludeProcessTree() to process XInclude only on a subtree + this should fix bug #115385 + +Fri Jul 18 17:11:42 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c include/libxml/relaxng.h: adding Get interface for + the error callback and parameters of parsing and validation + contexts + * xmlreader.c: patch to fix bug #117702 about incomplete Read() + on text nodes. + +Wed Jul 16 23:15:53 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: patch from Dodji Seketeli about UTF16 BOM + when using the push XML parser. + * result/utf16bom.xml result/noent/utf16bom.xml test/utf16bom.xml: + added the test to the regression suite. + +Tue Jul 15 22:03:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c: add xmlThrDefMutex = NULL in xmlCleanupGlobals() + as suggested by Rob Richards + +Tue Jul 15 15:30:55 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c HTMLparser.c entities.c parser.c relaxng.c + xmlschemas.c xpath.c: removed some warnings by casting xmlChar + to unsigned int and a couple of others. + +Fri Jul 11 16:44:22 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: fixes a segfault on empty hexBinary strings + +Thu Jul 10 16:02:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c: cleanup patches from Peter Breitenlohner + +Tue Jul 8 16:02:19 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c threads.c: fixes some problem when freeing unititialized + mutexes + +Tue Jul 8 14:15:07 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c: the modules should not import <config.h> + directly, some cleanups + * xmlschemas.c: Peter Sobisch found a nasty bug in the Schemas + validation code. + +Mon Jul 7 18:00:51 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js: Jesse Pelton pointed out a problem in the + javascript code. + +Mon Jul 7 16:39:31 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/*: regenerated + * nanoftp.c nanohttp.c: might fix includes problems with the + Ipv6 support on solaris + * tree.c: patch from Markus Keim about xmlHasNsProp() on attributes + defined as #IMPLIED + +Sun Jul 6 23:09:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/*: preparing release 2.5.8 + * nanohttp.c: changed some preprocessor block + * xmlschemastypes.c: applied patch from Charles Bozeman adding + hexBinary schema datatype and adding support for totalDigits and + fractionDigits facets. + +Sun Jul 6 19:56:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * debugXML.c xpath.c: fixed 2 bugs pointed in #116448 + +Sun Jul 6 19:34:17 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixed bug #116095 removing the error message when + reapplying XInclude to a document. + +Sat Jul 5 22:40:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied small changes to portability layer for + compilation on DJGPP Ms-DOS compiler. + +Sat Jul 5 22:30:25 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c HTMLparser.c: use the character() SAX callback + if the cdataBlock ain't defined. + * xpath.c: fix bug #115349 allowing compilation when configured + with --without-xpath since the Schemas code needs NAN and co. + +Sat Jul 5 00:51:30 HKT 2003 William Brack <wbrack@mmm.com.hk> + + Fixed problem with multi-threading, shown by the test program + testThreads. After fix, ran mutiple tests on various speed + machines (single and dual processor X86), which all seem okay. + + * catalog.c: added missing xmlRMutexUnlock in xmlLoadCatalog + + * threads.c: added missing initialisation for condition variable + in xmlNewRMutex. + +Sat Jun 21 16:10:24 CEST 2003 Daniel Veillard <daniel@veillard.com> + + Applying IPv6 patch from Archana Shah <archana.shah@wipro.com> + closing bug #114837 + + * configure.in: Added checks for IPv6 support and getaddrinfo(). + + * acconfig.h: Defined HAVE_GETADDRINFO and SUPPORT_IP6. + + * config.h.in: Defined HAVE_GETADDRINFO and SUPPORT_IP6. + + * nanoftp.c: Structure xmlNanoFTPCtxt contains either sockaddr_storage + field or sockaddr_in field, depending upon the availability of IPv6 + support. + have_ipv6(): Added to check for run-time IPv6 support. + (xmlNanoFTPScanURL), (xmlNanoFTPUpdateURL), (xmlNanoFTPScanProxy): + Modified to parse a URI with IPv6 address given in []. + (xmlNanoFTPConnect): Changed to use getaddrinfo for address + resolution, if it is available on the system, as gethostbyname + does not return IPv6 addresses on some platforms. + (xmlNanoFTPGetConnection): Modified type of dataAddr variable to + sockaddr_storage or sockaddr_in depending upon the IPv6 support. + Sending EPSV, EPRT or PASV, PORT depending upon the type of address + we are dealing with. + + * nanohttp.c: (have_ipv6): Added to check for run-time IPv6 support. + (xmlNanoHTTPScanURL), (xmlNanoHTTPScanProxy): Modified to parse + a URI with IPv6 address given in []. + (xmlNanoHTTPConnectHost): Modified to use getaddrinfo if it is + available on the system. Also IPv6 addresses will be resolved by + gethostbyname only if IPv6 run-time support is available. + (xmlNanoHTTPConnectAttempt): Modified to deal with IPv6 address. + +Sat Jun 14 18:46:51 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/configure.js include/win32config.h + include/libxml/xmlversion.h.in: Applied the patch for BCB + by Eric Zurcher. + +Fri Jun 13 14:27:19 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am doc/html/*: reverted back patch for #113521, + due to #115104 and while fixing #115101 . HTML URLs must not + be version dependant. + +Fri Jun 13 12:03:30 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c: do not generate " for " outside of attributes + * result//*: this changes the output of some tests + +Mon Jun 9 12:28:58 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c xmlIO.c: trying to fix #114277 about when file + remapping and escaping should really be attempted. + +Mon Jun 9 11:06:09 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/*: applied a patch from Gman for building docs + * valid.c xmllint.c include/libxml/valid.h: applied a patch from + Gary Pennington to provide an allocator for xmlValidCtxt + * xmlreader.c: applied patch from Jacek Konieczny fixing bug + #113580 about data not being passed immediately. + +Thu Jun 5 11:31:02 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied a couple of patches from Mark Itzcovitz + to handle saving back "UTF-16" documents. + +Mon Jun 2 21:56:15 MVT 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlschemas.c include/libxml/schemasInternals.h: commiting + some work done while in the Maldives (hence the timezone on the + laptop !) + * result/schemas/length3* test/schemas/deter0_* + test/schemas/group0_*: some tests added too + +Mon Jun 2 15:34:17 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c: small fix + * xmlIO.c: fixed an error message + +Tue May 20 14:21:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fixing Red Hat bug #91013 where xmllint was + accepting an improper UTF8 sequence + +Sat May 17 12:53:11 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * threads.c: applied the patch from Stéphane Bidoul for getting + rid of extra threads in a dynamic library. + * win32/configure.js: threads default to 'native' now. + +Fri May 16 13:17:52 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixing bug #112904: html output method escaped + plus sign character in URI attribute. + +Thu May 15 18:06:18 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * build_glob.py global.data globals.c parser.c + include/libxml/globals.h: patch from Stéphane Bidoul for setting + up threads global defaults. + * doc/libxml2-api.xml: this extends the API with new functions + * python/tests/Makefile.am python/tests/reader2.py + python/tests/thread2.py: integrated the associated testcase and + fixed the error string used in reader2 + +Wed May 14 14:56:46 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in libxml.spec.in python/Makefile.am: trying + to conciliate --with-python= requirements and RPM builds, + a PITA really... + +Tue May 13 18:30:34 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: oops last commit introduced a memory leak. + +Tue May 13 18:10:38 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c doc/xmllint.xml: added --nonet option + * doc/Makefile.am: fixing #112803 by adding --nonet when calling + xsltproc or xmllint + * doc/xmllint.xml doc/xmllint.1: also added --schema doc and + rebuilt + * HTMLparser.c: cleaned up the HTML parser context build when + using an URL + +Tue May 13 16:35:04 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: added a comment about bug #112902 + +Mon May 12 21:58:00 EDT 2003 William Brack <wbrack@mmm.com.hk> + + * minor cleanup of configure '--help' display + * error.c: enhanced xmlParserPrintFileContext to fix bug #109942 + +Mon May 12 17:53:30 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: PI nodes in external subset were not freed :-\ + fixes bug #112842 + +Mon May 12 11:23:27 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added --schema option to run WXS schema validation + * xmlschemas.c xmlschemastypes.c include/libxml/schemasInternals.h: + tried to improve error reporting in the Schema code, some cleanup + too. + +Sun May 11 16:13:20 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed some problems in the handling of errors, + and attributes addressed by references. + * test/schemas/* result/schemas/*: dropped the verbosity level + and added a couple of new tests + +Sat May 10 16:01:21 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: Stéphane Bidoul found an off by one addressing + error on the error handling. + +Fri May 9 19:08:20 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: trying to fix #112673 + +Fri May 9 18:14:16 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c catalog.c parser.c relaxng.c: removed multiple + warning, this fixed a bug and should close #111574 + +Fri May 9 15:34:32 EDT 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixing bug #104081 with xs:all with an element + holding minOccurs="0" + * test/schemas/all_* result/schemas/all_*: added some regression + tests for that bug + * xmllint.c xmlreader.c: patches from Joerg Schmitz-Linneweber and + Garry Pennington to compile without schemas support. + +Thu May 1 10:02:35 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed a problem with xmlUnlinkNode() for DTDs. + +Wed Apr 30 14:16:08 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xml2-config.in: try to fix Red hat bug #89957, do not + output -L/usr/lib64 + * xmlreader.c: fixed a typo in a comment + +Tue Apr 29 07:32:02 MDT 2003 John Fleck <jfleck@inkstain.ent> + + * doc/tutorial/aph.html, ix01.html + forgot to cvs add the new files. Thanks to Roland van Laar + for pointing this out + +Tue Apr 29 14:36:49 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c doc/libxml2-api.xml: fixing a function comment + * doc/Makefile.am doc/apibuild.py doc/gnome-xml.sgml: switching + to the XML/XSLT doc generation closing #111799 + * doc/html/*: complete update of the HTML results + +Mon Apr 28 14:51:41 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/defgen.xsl: fixed the conditional for unicode map, + removed hardcoded schema entries + +Mon Apr 28 02:19:00 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/defgen.xsl: new file, stylesheet for generating + win32/libxml2.def.src from doc/libxml2-api.xml + * win32/libxml2.def.src: is autogenerated from now on, changes + to this file will not appear here anymore + +Mon Apr 28 00:12:11 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * win32/configure.js python/setup.py.in: applied patch + from Stéphane Bidoul for the Python bindings on the new + release. + +Sun Apr 27 17:56:21 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * debugXML.c: included libxml/uri.h for xmlCanonicPath + declaration + * win32/configure.js: thread-enabled build is now default + * win32/libxml2.def.src: added more exports + +Sun Apr 27 00:23:05 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/*.xsl doc/*.html: updated the web site separated + developers from common pages, made the transition to XHTML1, + added validity checking to the makefile rules. + +Sat Apr 26 23:17:51 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fix for xmlIOParseDTD same as previous and reported + by Petr Pajas + +Sat Apr 26 15:26:04 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied fix to xmlSAXParseDTD from Malcolm Tredinnick + closing #111638 + +Sat Apr 26 14:00:58 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: fixed a problem in the generator where + the way functions are remapped as methods on classes was + not symetric and dependant on python internal hash order, + as reported by Stéphane Bidoul + +Fri Apr 25 21:52:33 MDT 2003 John Fleck <jfleck@inkstain.net> + + * doc/tutorial: + xmltutorial.xml + xmltutorial.pdf + *.html + add appendix on generating compiler flags, more indexing + +Sat Apr 26 01:10:48 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * triodef.h vms/build_libxml.com: applied patch from Craig A. Berry + to get libxml-2.5.7 to compile on OpenVMS + +Fri Apr 25 18:42:35 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing an xmlParseDTD bug raised by Petr Pajas + +Fri Apr 25 15:20:29 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am doc/xmlcatalog.1 doc/xmlcatalog_man.xml + doc/xmllint.1 doc/xmllint.xml: automated the generation of the + man page based on xsltproc and a stylesheet PI in the XML. + +Fri Apr 25 12:37:33 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * doc/xmllint.*: trying to fix #110541 where generated + character preventing rendering by the man command. + +Fri Apr 25 01:09:23 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS configure.in: preparing release 2.5.7 + * doc/*: updated and rebuilt the docs + * doc/apibuild.py: fixed the script + +Thu Apr 24 19:11:12 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am doc/apibuild.py: make sure the OOM code don't + get in the way of the builds + * doc/libxml2-api.xml python/libxml2class.txt: automatic update + +Thu Apr 24 18:01:46 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am testOOM.c testOOMlib.[ch] : integrated the Out Of + Memory test from Havoc Pennington #109368 + * SAX.c parser.c parserInternals.c tree.c uri.c valid.c + xmlmemory.c xmlreader.c xmlregexp.c include/libxml/tree.h + include/libxml/parser.h: a lot of memory allocation cleanups + based on the results of the OOM testing + * check-relaxng-test-suite2.py: seems I forgot to commit the + script. + +Wed Apr 23 17:16:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: trivial fix for 109774 removing a warning + +Wed Apr 23 15:49:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c SAX.c catalog.c debugXML.c parser.c: try to find + more places where xmlCanonicPath() must be used to convert + filenames to URLs, trying to fix #111088 + +Wed Apr 23 09:35:12 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/libxml.py: applied patch from + Brent M Hendricks adding binding for xmlCatalogAddLocal + +Tue Apr 22 15:18:01 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: tried to fix #98879 again in a more solid + way. + +Tue Apr 22 13:58:43 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/libxml2.def.src: added more exports from the relaxng and + xmlreader clan + +Tue Apr 22 10:35:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c test/valid/ns* test/result/ns*: applied the patch + provided by Brent Hendricks fixing #105992 and integrated the + examples in the testsuite. + +Tue Apr 22 01:06:09 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * TODO: updated a bit + * configure.in: fixed the comment, threads now default to on + * parserInternals.c: fixed an erroneous xmlMallocAtomic() call + +Mon Apr 21 23:33:38 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c libxml.h parser.c parserInternals.c tree.c xmllint.c + xmlreader.c include/libxml/parser.h: a lot of performance work + especially the speed of streaming through the reader and push + interface. Some thread related optimizations. Nearly doubled the + speed of parsing through the reader. + +Sun Apr 20 10:36:05 MDT 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml + * doc/xmllint.1 + update man page to explain use of --stream + +Sat Apr 19 02:03:24 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c HTMLparser.c c14n.c catalog.c encoding.c globals.c + nanohttp.c parser.c parserInternals.c relaxng.c tree.c uri.c + xmlmemory.c xmlreader.c xmlregexp.c xpath.c xpointer.c + include/libxml/globals.h include/libxml/xmlmemory.h: added + xmlMallocAtomic() to be used when allocating blocks which + do not contains pointers, add xmlGcMemSetup() and xmlGcMemGet() + to allow registering the full set of functions needed by + a garbage collecting allocator like libgc, ref #109944 + +Fri Apr 18 16:37:41 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in: switched to have thread support enabled by default, + didn't got troubles with ABI compatibility on Linux, hope it + won't break on strange OSes, if yes, report the system ID + * doc/libxml2-api.xml: just rebuilt the API + +Fri Apr 18 14:31:15 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.h include/libxml/parser.h parser.c xmlIO.c DOCBparser.c: + added support for large file, tested with a 3+GB instance, + and some cleanup. + * catalog.c: added a TODO + * Makefile.am: added some "make tests" comments + +Thu Apr 17 14:51:57 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: some cleanups + * doc/xmlreader.html: extended the document to cover RelaxNG and + tree operations + * python/tests/Makefile.am python/tests/reader[46].py: added some + xmlReader example/regression tests + * result/relaxng/tutor*.err: updated the output of a number of tests + +Thu Apr 17 11:35:37 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: valgrind pointed out an uninitialized variable error. + +Thu Apr 17 11:06:28 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * include/libxml/relaxng.h relaxng.c include/libxml/xmlreader.h + xmlreader.c: augnemting the APIs, cleanups. + * parser.c: cleanup bug #111005 + * xmlIO.c: added some missing comments + +Wed Apr 16 17:46:50 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmllint.c: more work on RelaxNG streaming validation + trying to improve the subset compiled, and more testing. + * doc/downloads.html doc/xml.html doc/xmlmem.html: some updates on the + documentation + * test/relaxng/tutor11_1_3.xml: fixes the DTD path + * result/relaxng/*.err: fix some of the outputs + +Wed Apr 16 01:28:15 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlreader.c xmllint.c include/libxml/relaxng.h + include/libxml/xmlreader.h: implemented streaming of + RelaxNG (when possible) on top of the xmlReader interface, + provided it as xmllint --stream --relaxng .rng .xml + This seems to mostly work. + * Makefile.am: updated to test RelaxNG streaming + +Mon Apr 14 18:08:33 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c include/libxml/relaxng.h: integrated the regexp + based validity checking of fragments of the document for + which the RNG can be compiled to regexps. Works on all regression + tests, only fix needed is related to error messages. + +Sun Apr 13 21:51:00 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlregexp.c include/libxml/xmlautomata.h + include/libxml/xmlregexp.h: Starting work precompiling + parts of RelaxNG schemas. Not plugged onto validity checking + yet, just the regexp building part. Needed to extend some + of the automata and regexp APIs. + +Fri Apr 11 21:36:21 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c xmlreader.c include/libxml/xmlreader.h: make sure + xmllint --stream and xmllint --stream --valid returns errors + code appropriately + +Fri Apr 11 10:59:24 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h: Added the Expand() + and Next() operation to work on subtrees within the reader + framework. + * doc/libxml2-api.xml python/libxml2class.txt: resulting updates + * python/tests/reader5.py: added an example for those new + functions of the reader. + +Thu Apr 10 23:38:13 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: patch from Vasily Tchekalkin to fix #109865 + +Thu Apr 10 15:32:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixing HasValue for namespace as raised by + Denys Duchier + +Wed Apr 9 14:07:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c include/libxml/HTMLparser.h: exported + htmlCreateMemoryParserCtxt() it was static + +Wed Apr 9 13:21:48 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c xmlschemastypes.c include/libxml/xmlschemas.h: + update from Charles Bozeman for date and duration types + * test/schemas/date_0.* test/schemas/dur_0.* + result/schemas/date_0.* result/schemas/dur_0.*: updated too + +Mon Apr 7 12:19:26 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c valid.c xpath.c include/libxml/tree.h include/libxml/valid.h: + fixing bug #107129, removing excessive allocation and calls + to *printf in the code to build QName strings. + +Sat Apr 5 11:41:36 CEST 2003 Igoe Zlatkovic <igor@zlatkovic.com> + + * win32/libxml2.def.src: fixed conditional exports, reported by + Luke Murray. + +Fri Apr 4 18:08:00 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a possible problem with xmlRecoverMemory() + +Thu Apr 3 17:24:44 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * trio.c trio.h triodef.h trionan.c trionan.h triop.h triostr.c + triostr.h: Bjorn sent an update for the TRIO portability layer. + +Tue Apr 1 21:57:26 CEST 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/libxml2.def.src: exported new functions + +Tue Apr 1 13:09:46 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS: preparing release 2.5.6 + * doc/*: updated and rebuilt the docs + +Tue Apr 1 11:52:15 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixed an uninitialized memory access pointed by valgrind + on C14Ntests + +Tue Apr 1 00:12:28 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: one more fixup of error message reporting + +Mon Mar 31 18:36:32 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on bug #109225, and fixed an uninitialized + variable pointed out by valgrind + +Mon Mar 31 18:05:22 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: try to work on bug #109225 and provide better + error reports. + * result/relaxng/* : this change the output of a number of tests + * xinclude.c: fixing the parsed entity redefinition problem + raised on the list. + * test/schemas/date_0.xsd: updated the date test c.f. E2-12 + +Mon Mar 31 13:19:04 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: fixed date comparison to handle the tzo + The only failures left are disagreements on Notations and + '+1' not being allowed for ulong, uint, ushort and ubyte. + +Mon Mar 31 12:11:47 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: fixed gMonth parsing routine accordingly + to the XML Schemas errata + http://www.w3.org/2001/05/xmlschema-errata#e2-12 + +Sun Mar 30 23:04:18 CEST 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlschemastypes.c: more work on XML Schemas datatypes + and facets support. Currently only schemas with binHex or + base64 don't compile. A few error left in the test suite: + found 1035 test instances: 919 success 23 failures + most are gdate or gdateyear failing check, and a few cases where + James clark tests results are strange. + * valid.c: allow to reuse the Notation checking routine without + having a validation context. + * SAX.c: removed a #if 0 + +Sat Mar 29 17:35:05 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: forgot to apply one check from #106931 patch + * xmlschemastypes.c: more work on XML Schemas datatypes + +Sat Mar 29 11:49:25 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c include/libxml/relaxng.h xmlschemastypes.c: more work + on cleaning up XML Schemas datatypes based on James Clark tests + test/xsdtest/xsdtest.xml + +Fri Mar 28 14:24:08 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: implemented comparisons for Schemas values. + * xmlschemastypes.c include/libxml/xmlschemastypes.h: fixed + some bugs in duration handling, comparisons for durations + and decimals, removed all memory leaks pointed out by James + testsuite. Current status is now + found 238 test schemas: 197 success 41 failures + found 1035 test instances: 803 success 130 failures + +Fri Mar 28 00:41:55 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/xmlschemas.h: fixed bugs and memory + leaks in the W3C XML Schemas code + * xmlschemastypes.c: implemented nonPositiveInteger + * test/schemas/length2_0.xsd result/schemas/length2_0_0.err: + fixed the test and result. + +Thu Mar 27 22:23:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c tree.c: two patches from James Bursa on the HTML + parser and a typo + * xmlschemastypes.c: reindenting, fixing a memory access + problem with dates. + +Thu Mar 27 15:53:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing #109227 providing more context in case of + start/end tag mismatch + * python/tests/ctxterror.py python/tests/readererr.py: update the + tests accordingly + +Thu Mar 27 15:22:41 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: should fix #109327 errors on memory accesses + +Thu Mar 27 15:06:13 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: Fixed reopening of #78662 <form action="..."> + is an URI reference + +Wed Mar 26 22:38:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed bug #109160 on non-ASCII IDs + +Wed Mar 26 17:30:37 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: Norm suggested a nicer error message for xml:space values + errors + +Wed Mar 26 01:34:19 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c include/libxml/xpath.h: first part of the fix to + performance bug #108905, adds xmlXPathOrderDocElems() providing + document order for nodes. + * python/libxml.c: Python may require TRIO as Albert Chin pointed out + +Tue Mar 25 16:07:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: removing a warning with Sun compiler + bug #109154 + +Tue Mar 25 07:02:56 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml + * doc/xmllint.1 + update xmllint man page with --relaxng option + +Tue Mar 25 12:07:03 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/setup.py.in : was missing "drv_libxml2.py" + +Mon Mar 24 19:38:05 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c xpath.c: some changes related to the new way of + handling Result Value Tree, before 2.5.5 + +Mon Mar 24 16:36:23 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS: preparing release 2.5.5 + * doc/* : updated the documentation and regenerated it. + +Mon Mar 24 14:56:01 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed some problems related to #75813 about handling + of Result Value Trees + +Sun Mar 23 22:57:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied a set of patches from Lorenzo Viali correcting + URI parsing errors. + +Sun Mar 23 22:00:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: validity status was not passed back when validating in + entities, but raised by Oliver Fischer + +Sun Mar 23 21:30:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: avoid escaping ',' in URIs + +Sun Mar 23 12:57:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing bug #108976 get the ID/REFs to reference + the ID in the document content and not in the entity copy + * SAX.c include/libxml/parser.h: more checking of the ID/REF + stuff, better solution for #107208 + * xmlregexp.c: removed a direct printf, dohhh + * xmlreader.c: fixed a bug on streaming validation of empty + elements in entities + * result/VC/ElementValid8 test/VCM/v20.xml result/valid/xhtml1.xhtml: + cleanup of the validation tests + * test/valid/id* test/valid/dtds/destfoo.ent result/valid/id*: + added more ID/IDREF tests to the suite + +Sat Mar 22 23:38:08 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed #107043 removing 2 warnings with Sun One + compiler. + +Sat Mar 22 18:50:45 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: valgrind'ed and cleaned up a couple of memory issues. + +Sat Mar 22 16:15:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fix bug #107208 avoid false duplicates when ID/REFs are + defined in entities content + +Sat Mar 22 15:53:27 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: Fixed validation bug #108858 on namespace names using + entities and reported by Brent Hendricks + * xmllint.c: report xmlTextReaderHasValue() result in --stream + --debug output. + +Sat Mar 22 13:32:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed bug #108801 reported by Malcolm Tredinnick + about the DocType node not being reported sometimes. + * python/tests/reader.py: added to test to the regression checks + +Sat Mar 22 01:57:40 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed bug #108546 on long CDATA (or text nodes) + reported by Edd Dumbill + +Sat Mar 23 01:00:24 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c parser.c parserInternals.c: patch from + johan@evenhuis.nl for #107937 fixing some line counting + problems, and some other cleanups. + * result/HTML/: this result in some line number changes + +Fri Mar 21 22:19:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in Makefile.am: fixed Red Hat bug #86118 use libxml2.spec + instead of libxml.spec + * relaxng.c: fixed some of the error reporting excessive + verbosity + * catalog.c debugXML.c valid.c xmlreader.c xmlschemas.c xpath.c + xmlschemastypes.c: removed some warnings from gcc + * doc/libxml2-api.xml: rebuilt + +Fri Mar 21 17:25:23 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: another optimization, for choice this time + * result/relaxng/spec1* result/relaxng/tutor12_1* + result/relaxng/tutor3_7: cleanups. + +Fri Mar 21 13:41:23 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed xmlRelaxNGNodeMatchesList + * test/relaxng/testsuite.xml: augmented the test suite + * result/relaxng/spec1* result/relaxng/tutor12_1*: this fixes + some schemas validation tests in the presence of foreign + namespaces. + +Fri Mar 21 02:23:34 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: added another interleave speedup. + +Thu Mar 20 17:22:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: added integer and fixed one of the + IDREFS regression tests pbm + * result/relaxng/docbook_0.err: updated + +Wed Mar 19 21:58:47 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c xmlschemastypes.c: attempt to cope with ID/IDREF(S) + declared both in the DTD and in the Schemas <grin/> + * relaxng.c: more debug, added a big optimization for <mixed> + * test/relaxng/testsuite.xml: augmented the testsuite + * test/relaxng/ result/relaxng: added the RelaxNG spec and a + DocBook example to the regression tests + +Wed Mar 19 11:34:10 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xsddata-test-suite.py: cosmetic change for output + * relaxng.c: try to minimize calls to malloc/free for states. + +Tue Mar 18 17:50:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: removed a warning + * xmlschemastypes.c: more cleanup, added ENTITY and ENTITIES + support + * check-relaxng-test-suite.py check-xsddata-test-suite.py: + cleanup/improvements of the regression tests batch + * test/relaxng/testsuite.xml: augmented libxml2 own testsuite + +Tue Mar 18 12:36:22 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed error msg cleanup deallocation + * xmlschemastypes.c: added a function to handle lists of + atomic types, added support for IDREFS + +Tue Mar 18 01:28:15 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c valid.c xmlschemastypes.c: added Datatype ID + and IDREF, usable from RelaxNG now + * include/libxml/xmlschemastypes.h: need to add a new interface + because the validation modifies the infoset + * test/relaxng/testsuite.xml: extended the testsuite + +Mon Mar 17 16:34:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed the last core RelaxNG bug known #107083, + shemas datatype ID/IDREF support still missing though. + * xmlreader.c: fix a crashing bug with prefix raised by + Merijn Broeren + * test/relaxng/testsuite.xml: augmented the testsuite with + complex inheritance tests + +Sun Mar 16 18:45:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: switched back to the previous Relax-NG code base, + the derivation algorithm need severe constraining code to avoid + combinatorial explosion. Fixed the problem with Sebastian Rahtz + TEI based example and other bugs + * result/relaxng/*err: updated the results + * test/relaxng/testsuite.xml: started a new test suite + +Sat Mar 15 22:26:46 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c include/libxml/relaxng.h: After coming to the conclusion + that the original RelaxNG validation code was un-fixeable, it got + rewritten to use the derivation algorithm from James Clark and + redebugged it (nearly) from scratch: + found 373 test schemas: 372 success 1 failures + found 529 test instances: 529 success 0 failures + +Tue Mar 11 12:08:23 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c parser.c: fix some recursion problems introduced in the + last release. + * relaxng.c: more debugging of the RNG validation engine, still + problems though. + +Mon Mar 10 14:10:47 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: stop generating wrong result file with * in name + * relaxng.c: fixing the include bug raised by Sebastian Rahtz + * result/relaxng/demo* test/relaxng/demo: added the tests from + Sebastian reproducing the problem. + +Sun Mar 9 18:02:31 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.1: regenerating man page from xmllint.xml to pick + up Aleksey's change + +Sun Mar 9 13:53:16 2003 Aleksey Sanin <aleksey@aleksey.com> + + * xmllint.c doc/xmllint.xml: use $XMLLINT_INDENT environment + variable to control the indentation for the xmllint "--format" + option + +Sat Mar 8 14:27:43 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * encoding.c: applied Gennady's patch against buffer overrun + +Fri Mar 7 19:29:40 CET 2003 Daniel Veillard <daniel@veillard.com> + + * test/xsdtest/xsdtest.xml uri.c: after and exchange with James + Clark it appeared I had bug in URI parsing code ... + * relaxng.c include/libxml/relaxng.h: completely revamped error + reporting to not loose message from optional parts. + * xmllint.c: added timing for RNG validation steps + * result/relaxng/*: updated the result, all error messages changed + +Fri Mar 7 15:18:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fix bug #107804, the algorithm used for document order + computation was failing on attributes. + +Thu Mar 6 22:35:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fix bug #107764 , possibility of buffer overflow + in xmlValidDebug() + +Wed Mar 5 17:41:37 CET 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c include/libxml/nanoftp.h: adding xmlNanoFTPDele() + from Philipp Dunkel + +Wed Mar 5 10:57:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastype.c: made powten array static it should not be exported + * HTMLparser.c: fix bug #107361 by reusing the code from the XML + parser function. + * testHTML.c: get rid of valgrind messages on the HTML SAX tests + +Fri Feb 28 00:23:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed a node dump crash on attributes + * test/xsdtest/xsdtest.xml test/xsdtest/xsdtest.xsl: fixed + an URI test bug and get better output. + +Thu Feb 27 22:28:40 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xsddata-test-suite.py: give more infos + * relaxng.c: fix a bug reported by Sebastian Rahtz and + REF->DEF in attribute values. + +Thu Feb 27 21:09:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xsddata-test-suite.py test/xsdtest/xsdtest.xml + test/xsdtest/xsdtest.xsl: import of the XSD Datatype + regression tests from James Clark. + +Thu Feb 27 18:40:04 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c xmlschemas.c xmlschemastypes.c + include/libxml/xmlschemastypes.h: added param support for relaxng + type checking, started to increment the pool of simple types + registered, still much work to be done on simple types and + facets checkings. + +Wed Feb 26 16:45:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * entities.c: fixes again one of the problem raised by + James Clark in #106788 + +Wed Feb 26 15:46:48 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: Fixed a couple of problem raised by James Clark + in bug #107083, the support for ID/IDREF/IDREFS at the WXS + datatype level still not fixed though. + +Mon Feb 24 21:09:19 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing release 2.5.4 + * doc/*: updated and rebuilt the docs + * relaxng.c: removed warnings + * result/relaxng/*: updated the results + +Mon Feb 24 20:53:17 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixes a DTD regexp generation problem. + +Mon Feb 24 20:12:57 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixes bug #105998 about false detection of + attribute consumption loop. + +Mon Feb 24 19:14:57 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: Fixes bug #106931 in XInclude entities merging. + +Mon Feb 24 18:50:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixed bug #105992 + +Mon Feb 24 18:14:16 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed xmlSetProp and al. when the node passed is not an + element. + * relaxng.c: fixed bugs 7.3 (though not complete) and memory leaks + found 373 test schemas: 369 success 4 failures + found 529 test instances: 525 success 4 failures + * check-relaxng-test-suite.py: added memory debug reporting + +Mon Feb 24 12:41:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * uri.c parser.c: some warning removal on Igor's patch + * tree.c: seems I messed up with #106788 fix + * python/libxml.c: fixed some base problems when Python provides + the resolver. + * relaxng.c: fixed the interleave algorithm + found 373 test schemas: 364 success 9 failures + found 529 test instances: 525 success 4 failures + the resulting failures are bug in the algorithm from 7.3 and + lack of support for params + +Sun Feb 23 14:49:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: another fix for nodeinfo in entities problem + * tree.c entities.c: fixed bug #106788 from James Clark + some spaces need to be serialized as character references. + +Sat Feb 22 18:28:16 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * parser.c uri.c: fixed the bug I introduced in the path + handling, reported by Sebastian Bergmann + +Sat Feb 22 00:19:48 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing some nodeinfo in entities problem raised + by Glenn W. Bach + * relaxng.c: implemented the first section 7.3 check + * result/relaxng/*: updated the results + +Fri Feb 21 18:12:19 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: fixed some problems in the previous commit + and finished implementing 4.16 rules checking + found 373 test schemas: 353 success 20 failures + found 529 test instances: 519 success 6 failures + * result/relaxng/*: updated the results + +Fri Feb 21 16:37:39 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: implemented checks from section 7.2 + +Thu Feb 20 16:00:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: implemented the checks from section 7.1, fixed + some of the 4.20 and 4.21 problems. + found 373 test schemas: 338 success 35 failures + found 529 test instances: 519 success 6 failures + * result/relaxng/*: updated the results + +Thu Feb 20 01:09:24 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: implemented the 4.20 and 4.21 simplification rules. + * result/relaxng/*: updated the results + +Wed Feb 19 18:30:30 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more bugfixes + * result/relaxng/*: updated the results + +Wed Feb 19 15:39:56 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * DOCBparser.c: obsoleted xmlNormalizeWindowsPath + * HTMLparser.c: obsoleted xmlNormalizeWindowsPath + * SAX.c: ensured xmlDoc.URL is always canonic + * parser.c: obsoleted xmlNormalizeWindowsPath + * uri.c include/libxml/uri.h: introduced xmlCanonicPath + * xmlIO.c include/libxml/xmlIO.h: obsoleted xmlNormalizeWindowsPath + * win32/libxml2.def.src: added few exports + +Wed Feb 19 14:26:51 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in: patched to have shared libraries + for Python regression tests and static binaries for gdb debug + in my development environment + * relaxng.c: more bugfixes + found 373 test schemas: 296 success 77 failures + found 529 test instances: 516 success 8 failures + * result/relaxng/*: updated the results + +Wed Feb 19 01:17:48 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: guess what ! Relax-NG bugfixing, what a surprize... + +Tue Feb 18 22:09:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: float/double check bugfix + * tree.c include/libxml/tree.h: exported a function for NMTOKEN + validation + * xmlreader.c: add a TODO for Jody + * relaxng.c: bugfix bugfix bugfix + found 373 test schemas: 300 success 73 failures + found 529 test instances: 507 success 10 failures + * result/relaxng/*: updated the results + +Tue Feb 18 00:33:17 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c check-relaxng-test-suite.py: more RelaxNG bug hunting + +Mon Feb 17 18:23:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c check-relaxng-test-suite.py: more work on the + RelaxNG implementation conformance testing. + found 373 test schemas: 284 success 89 failures + found 529 test instances: 448 success 47 failures + * result/relaxng/*: updated the results + +Sun Feb 16 16:48:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * ChangeLog tree.c doc/libxml-doc.el doc/libxml2-api.xml: applied + a patch from Kjartan Maraas to fix some typos + +Sun Feb 16 16:40:52 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more bug-hunting + * testRelax.c include/libxml/relaxng.h: added --tree to dump the + intermediate rng tree + * python/generator.py: patch from Stéphane Bidoul to fix the generator + on python < 2.2 + +Fri Feb 14 17:49:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-relaxng-test-suite.py relaxng.c: more testing on the + Relax-NG front, cleaning up the regression tests failures + current state and I forgot support for "mixed": + found 373 test schemas: 280 success 93 failures + found 529 test instances: 401 success 68 failures + * tree.c include/libxml/tree.h xmlschemastypes.c: finished and + moved the Name, NCName and QName validation routine in tree.c + * uri.c: fixed handling of URI ending up with #, i.e. having + an empty fragment ID. + * result/relaxng/*: updated the results + +Thu Feb 13 16:49:24 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xinclude-test-suite.py: improved the script accordingly + to the XInclude regression tests updates + * xpointer.c: Implemented XPointer element() Scheme W3C PR of 13 + November 2002 + * result/XPath/xptr/chapterschildseq result/XPath/xptr/vidchildseq + test/XPath/xptr/chapterschildseq test/XPath/xptr/vidchildseq: + augmented the Xpointer testsuite for the element() scheme + +Thu Feb 13 12:00:30 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: added TODO for the DTD compatibility spec + * xinclude.c: more bug fixes driven by the testsuite + +Tue Feb 11 19:01:02 CET 2003 Daniel Veillard <daniel@veillard.com> + + * check-xinclude-test-suite.py xinclude.c: Work on the W3C/NIST + regression tests for XInclude, improved the script, improving + XInclude error reporting mechanism + +Mon Feb 10 17:19:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/* configure.in: preparing release 2.5.3 + +Mon Feb 10 17:11:22 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: trying to fix #104934 about some XHTML1 serialization + issues. + +Mon Feb 10 16:41:13 CET 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c xmlIO.c: fixing bug #104646 about iconv based + encoding conversion when the input buffer stops in the + middle of a multibyte char + +Mon Feb 10 15:24:47 CET 2003 Daniel Veillard <daniel@veillard.com> + + * test/relaxng/OASIS/spectest.xml: OASIS RelaxNG testsuite + * check-relaxng-test-suite.py: python script to run regression + against OASIS RelaxNG testsuite + * relaxng.c: some cleanup tweaks + * HTMLparser.c globals.c: cleanups in comments + * doc/libxml2-api.xml: updated the API + * result/relaxng/*: errors moved files, so large diffs but + no changes at the semantic level. + +Mon Feb 10 01:00:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixing #105678 problem when dumping a namespace node. + +Mon Feb 10 00:30:01 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed doc comment problems + * python/generator.py python/libxml_wrap.h python/types.c: adding + RelaxNG wrappers + * python/tests/Makefile.am python/tests/relaxng.py: added a specific + test of those early Python RelaxNG bindings + +Sun Feb 9 15:18:43 CET 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: fixes a libtool problem on AMD 64bits builds + * relaxng.c: found the validation problem I had with interleave + when not covering all remaining siblings + * Makefile.am test.relaxng/* result/relaxng/*: augmented the + testsuite and check the RNG schemas against the RNG schemas + given in appendix A + +Sat Feb 8 18:55:43 CET 2003 Igor Zlatkovic <igor@zlatkovic.com> + + * win32/Makefile.msvc: updates for RelaxNG + * win32/Makefile.mingw: updates for RelaxNG + * win32/libxml2.def.src: added RelaxNG exports + +Fri Feb 7 14:00:53 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: applied another bug fix from Sean Chittenden + +Fri Feb 7 13:34:08 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in xmllint.c: I f...ed up the default configuration + of schemas and --relaxng option display in xmllint, pointed by + Morus Walter. + * xlink.c: Sean Chittenden pointed a couple of errors in the XLink + detection module, fixes bug #105374. + +Fri Feb 7 01:43:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: added the boolean base type. + +Thu Feb 6 10:23:52 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: started implementing some of the missing + default simple types + * result/relaxng/*: updated the results + +Wed Feb 5 15:28:04 CET 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/*: updated the docs, ready for 2.5.2 release + +Wed Feb 5 14:15:59 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c tree.c xmlIO.c: comments cleanups + * Makefile.am: use xmllint for doing the RelaxNG tests + * configure.in: preparing 2.5.2 made schemas support default to + on instead of off + * relaxng.c: removed the verbosity + * xmllint.c: added --relaxng option + * python/generator.py python/libxml_wrap.h: prepared the integration + of the new RelaxNG module and schemas + * result/relaxng/*: less verbose output + +Wed Feb 5 12:00:36 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: do not run content model validation if the + content is not determinist + +Wed Feb 5 11:43:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: added the redefinition of namespaced attribute + check that was missing as Fabrice Desré pointed out. + +Wed Feb 5 11:09:29 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c include/libxml/HTMLparser.h: applied HTML + improvements from Nick Kew, allowing to do more checking + to HTML elements and attributes. + +Tue Feb 4 23:47:06 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fixing bug #105137 about entities declaration + needing to be copied to the including document. + +Tue Feb 4 20:26:22 CET 2003 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixed bug #104817 with delegateURI + * xpath.c: fixing bugs #104123 and #104125 + +Tue Feb 4 17:12:56 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in valid.c xmlreader.c python/libxml_wrap.h + python/types.c: fixing #104096 to compile without regexps + +Tue Feb 4 16:31:55 CET 2003 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixing bug #103969 forgot to add an epsilon transition + when building the automata for elem* + +Tue Feb 4 16:21:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: applied patch from Arne de Bruijn fixing + bug #103827 + +Tue Feb 4 16:17:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: updating a comment, fixing #103776 + +Tue Feb 4 16:05:53 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing bug 105049 for validity checking of content + within recursive entities. + +Tue Feb 4 15:40:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: try to fix # 105049 + * relaxng.c xmlschemastypes.c: a couple of changes and extensions + * tree.c: updated a function comment + +Tue Feb 4 00:20:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng: more work on grammars and refs/defs + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Mon Feb 3 14:16:59 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng: more work on name classes, except support + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Mon Feb 3 11:56:05 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng: more work on name classes, the "validate all" schemas + seems to work now. + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Mon Feb 3 09:50:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: removed an unprotedted debug message Aleksi Suhonen + * parser.c: put a guard against infinite document depth, basically + trying to avoid another kind of DoS attack. + * relaxng.c: some code w.r.t. nameClasses + +Sun Feb 2 17:01:43 CET 2003 Daniel Veillard <daniel@veillard.com> + + * test/relaxng/* result/relaxng/*: check all the namespace support + was actually correct based on tutorial section 10. + +Sun Feb 2 15:33:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng: include seems to work okay now + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Sat Feb 1 19:44:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: a bit of work done in the train back. + * test/relaxng/*: added one of the include tests + +Thu Jan 30 14:06:55 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng: more work done in the train + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Wed Jan 29 23:44:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: debugging of externalRef + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Wed Jan 29 22:06:04 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG, implementing externalRef + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + * Makefile.am: cleanup to Relaxtests target + +Wed Jan 29 00:08:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG, implementing interleave + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Tue Jan 28 21:56:49 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG, implementing interleave + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Mon Jan 27 07:35:29 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/customfo.xsl + * doc/tutorial/customhtml.xsl + adding stylesheet customizations used to generate fo + for pdf and html + +Mon Jan 27 13:29:43 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + * xmlschemastypes.c: added a number of base type definition but not + the associated checks, those are still TODOs + +Sun Jan 26 17:37:06 MST 2003 John Fleck <jfleck@inkstain.net> + + in docs/tutorial: + * apa.html + * apb.html + * apc.html + * apd.html + * ape.html + * apf.html + * apg.html + * ar01s02.html + * ar01s03.html + * ar01s04.html + * ar01s05.html + * ar01s06.html + * ar01s07.html + * ar01s08.html + * index.html + * xmltutorial.pdf + * xmltutorial.xml + add index to tutorial + +Sun Jan 26 17:02:29 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog.1 + * doc/xmlcatalog_man.html + * doc/xmlcatalog_man.xml + belatedly fixing bug #93622 (adds rewriteURI type to + "--add" option in xmlcatalog man page + +Sun Jan 26 20:47:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c xmllint.c: applied patch for NetBSD by + Julio Merino, closing #104475 + +Sun Jan 26 20:38:43 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Sun Jan 26 01:49:58 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Sat Jan 25 18:59:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * README: updated the policy on private mail answers + * relaxng.c: more work on Relax-NG + * test/relaxng/* result/relaxng/*: augmented/updated the + regression tests + +Fri Jan 24 15:12:44 CET 2003 Daniel Veillard <daniel@veillard.com> + + * error.c parser.c tree.c: applied a documentation patch from + Stefan Kost + +Fri Jan 24 02:00:50 CET 2003 Daniel Veillard <daniel@veillard.com> + + * relaxng.c: more work on Relax-NG + * doc/*: regenerated the docs + * test/relaxng/* result/relaxng/*: updated and augmented the + Relax-NG regression tests and results + +Thu Jan 23 19:26:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in relaxng.c include/libxml/relaxng.h: + First commit of the new Relax-NG validation code, not generally + useful yet. + * test/relaxng/* result/relaxng/*: current state of the regression + tests + +Thu Jan 23 19:22:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: minimized the memory allocated for GetContent + and a bit of cleanup. + +Thu Jan 23 17:41:37 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: seems there is no good reasons to + not generate bindings for XPointer + +Tue Jan 21 13:19:35 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c doc/apibuild.py: applied a new patch from + Stéphane Bidoul for cleanups + * doc/libxml2-api.xml: rebuilt the API description with + new entry points + +Mon Jan 20 23:25:00 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/drv_libxml2.py python/generator.py + python/libxml.c python/libxml.py python/libxml_wrap.h + python/types.c: patch from Stéphane Bidoul for better per + context error message APIs + * python/tests/ctxterror.py python/tests/readererr.py: + update of the tests + +Sun Jan 19 17:09:28 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/guidelines.html + grammar and spelling cleanup + +Fri Jan 17 00:31:30 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h python/generator.py + python/libxml.c python/libxml.py win32/libxml2.def.src: applied + a patch from Stéphane Bidoul to allow per XMLtextReader error + and warning handling + * python/tests/Makefile.am python/tests/readererr.py: adding the + specific regression test + +Tue Jan 14 17:00:08 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: Alexey Efimov pointed out that concat('a', 'b', ) + should raise a syntax error + +Tue Jan 14 15:39:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: cleanup patch from Stéphane Bidoul + +Tue Jan 14 14:41:18 CET 2003 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fixing bug #103100 with a dummy UTF8ToUTF8 copy + +Tue Jan 14 12:40:29 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml.py + python/libxml_wrap.h python/types.c: applied and fixed a patch + from Stéphane Bidoul to provide per parser error handlers at the + Python level. + * python/tests/Makefile.am python/tests/ctxterror.py: added a + regression test for it. + +Tue Jan 14 01:15:04 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: fixed the streaming property of the reader, + it was generating tree faster than consuming it. Pointed out + by Nate Myers + * tree.c: fixed a bug in xmlSaveFormatFileEnc if passed a NULL doc + +Sun Jan 12 22:18:02 CET 2003 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: added more xmlreader and other exports + +Fri Jan 10 18:04:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fix to the XPath implementation for parent and + ancestors axis when operating on a Result Value Tree. + Fixes bug #100271 + +Fri Jan 10 17:07:01 CET 2003 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c nanohttp.c xmlIO.c: patch from Stefano Zacchiroli + to fix some URI/file escaping problems + +Fri Jan 10 16:20:34 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: fixed a bug raised by Raymond Wiker, + docSetRootElement() should not raise an exception if the + return is None + +Fri Jan 10 14:13:03 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py python/libxml.c python/libxml2-python-api.xml: + fixed bug #102181 by applying the suggested change and fixing + the generation/registration problem. + +Fri Jan 10 13:47:55 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed bug #102960 by reusing the XML name parsing + routines. + +Fri Jan 10 00:16:49 CET 2003 Daniel Veillard <daniel@veillard.com> + + * parser.c: one more IsEmptyElement crazyness, that time in + external parsed entities if substitution is asked. + * python/tests/reader3.py: added a specific test. + +Thu Jan 9 22:35:31 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/drv_libxml2.py: update from Stéphane Bidoul: python 2.1 + support and improved error handler registration + +Thu Jan 9 14:16:38 CET 2003 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c tree.c: fixes #102920 about namespace handling in + HTML output and section 16.2 "HTML Output Method" of XSLT-1.0 + * README: fixed a link + +Wed Jan 8 18:32:25 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in doc/* NEWS: preparing 2.5.1 release + * SAX.c parser.c: fixing XmlTextReader bug + +Wed Jan 8 00:13:01 CET 2003 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fuck, I introduced a memory leak on external parsed + entities in 2.5.0 :-( + +Tue Jan 7 12:12:45 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: another fix needed as pointed by Christophe Merlet + for --stream --debug if compiled without debug support. + +Mon Jan 6 20:53:08 MST 2003 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml + * doc/xmllint.1: + update man page with --stream and --chkregister + +Tue Jan 7 01:17:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * globals.c: fixed --with-threads compile + * xmllint.c: fixed --without-debug compile + * include/libxml/globals.h: cleanup + * include/libxml/schemasInternals.h: add a missing include + +Mon Jan 6 14:06:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * configure.in NEWS: preparing 2.5.0 release + * SAX.c: only warn in pedantic mode about namespace name + brokeness + * globals.c: fix a doc generation problem + * uri.c: fix #101520 + * doc/*: updated and rebuilt the doc for the release, includuding + stylesheet update + * python/Makefile.am: fix a filename bug + +Mon Jan 6 12:05:12 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/tutorial/* : fixed #101894 if doc == NULL xmlFreeDoc + should not be called. + +Mon Jan 6 11:59:09 CET 2003 Daniel Veillard <daniel@veillard.com> + + * libxml-2.0.pc.in: applied the patch to fix #101894 + +Sun Jan 5 23:35:47 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c : applied patch from Lukas Schroeder for register callbacks + * valid.c: modified patch from Lukas Schroeder to test + register callbacks with --chkregister + +Sun Jan 5 02:23:20 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: seriously changed the way data are pushed to + the underlying parser, go by block of 512 bytes instead of + tryng to detect tag boundaries at that level. Changed the + way empty element are detected and tagged. + * python/tests/reader.py python/tests/reader2.py + python/tests/reader3.py: small changes mostly due to context + reporting being different and DTD node being reported. Some + errors previously undetected are now caught and fixed. + * doc/xmlreader.html: flagged last section as TODO + +Sat Jan 4 20:40:28 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: integrated the Python 2.2 optimizations + from Hannu Krosing, while maintaining compatibility with + 1.5 and 2.1 + +Sat Jan 4 17:33:17 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: a bit of cleanup + * xmlreader.c: small fix + * doc/xmlreader.html: more work on the XmlTextReader tutorial + * python/libxml.py: a few fixes pointed out by Hannu Krosing + +Sat Jan 4 13:46:14 CET 2003 Daniel Veillard <daniel@veillard.com> + + * python/setup.py.in: patch from Stéphane Bidoul to include + drv_libxml2.py in setup.py + +Sat Jan 4 01:43:06 CET 2003 Daniel Veillard <daniel@veillard.com> + + * doc/xmlreader.html: starting documenting the new XmlTextReader + interface. + +Fri Jan 3 17:18:32 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added the --stream flag to use the TextReader API + * xmlreader.c: small performance tweak + +Fri Jan 3 13:50:55 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader2py: okay the DTD validation + code on top of the XMLTextParser API should be solid now. + +Fri Jan 3 02:17:18 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader2py: Fixing some more mess + with validation and recursive entities while using the + reader interface, it's getting a bit messy... + +Thu Jan 2 15:15:26 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: another couple of problem + related to IsEmptyElement reported by Stéphane Bidoul needed + some fixes. + +Thu Jan 2 13:57:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in python/Makefile.am python/drv_libxml2.py: + integrated drv_libxml2.py Python xml.sax driver from Stéphane Bidoul + based on the python XmlTextReader interface. + +Wed Jan 1 22:05:40 CET 2003 Daniel Veillard <daniel@veillard.com> + + * tree.c: backing out one change in the last patch which broke the + regression tests + +Wed Jan 1 21:57:28 CET 2003 Daniel Veillard <daniel@veillard.com> + + * global.data globals.c tree.c include/libxml/globals.h: applied + an old patch from Lukas Schroeder to track node creation and + destruction. Probably missing a lot of references at the moment + and not usable reliably. + +Wed Jan 1 20:12:07 CET 2003 Daniel Veillard <daniel@veillard.com> + + * NEWS doc/Makefile.am doc/news.xsl: generate the NEWS file + from doc/news.html and a stylesheet + +Wed Jan 1 16:09:57 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: fixed another couple of + xmlreader bugs reported by Stéphane Bidoul and added tests. + +Wed Jan 1 15:42:54 CET 2003 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader2.py: fixed another validity + checking in external parsed entities raised by Stéphane Bidoul + and added a specific regression test. + * python/tests/reader3.py: cleanup + +Tue Dec 31 15:44:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader2.py: fixed a problem with + validation within entities pointed by Stéphane Bidoul, augmented + the tests to catch those. + +Tue Dec 31 12:15:37 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: modified the generator to allow keeping + class references when creating new classes, needed to fix a bug + pointed by Stéphane Bidoul where the input buffer of the + xmlTextReader instance gets destroyed if the python wrapper for + the input is not referenced anymore. + +Mon Dec 30 19:39:36 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: fixed another pair of problem + pointed by Stéphane Bidoul: depth start at 0 and a parse problem. + +Mon Dec 30 13:36:50 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: fixed another problem + pointed by Stéphane Bidoul + +Mon Dec 30 12:39:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: fixed a limit case problem + with "<a/>" + +Mon Dec 30 11:53:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c: warn on xmlns:prefix="foo" + * xmlreader.c python/tests/reader.py: fixed a couple of problem + for namespace attributes handling. + +Mon Dec 30 00:59:07 CET 2002 Daniel Veillard <daniel@veillard.com> + + * entities.c parser.c tree.c include/libxml/entities.h: Fixed + a really nasty problem raised by a DocBook XSLT transform + provided by Sebastian Bergmann + +Sun Dec 29 12:13:18 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c python/tests/reader.py: fixed a bug pointed out + by Stéphane Bidoul and integrated it into the tests + +Sat Dec 28 23:49:12 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h doc/libxml2-api.xml: + extended the XmlTextReader API a bit, addding accessors for + the current doc and node, and an entity substitution mode for + the parser. + * python/libxml.py python/libxml2class.txt: related updates + * python/tests/Makefile.am python/tests/reader.py + python/tests/reader2.py python/tests/reader3.py: updated a bit + the old tests and added a new one to test the entities handling + +Sat Dec 28 22:11:57 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml2class.txt + python/tests/reader.py python/tests/reader2.py: changed the + generator to provide casing for the XmlTextReader similar to + C# so that examples and documentation are more directly transposable. + Fixed the couple of tests in the suite. + +Sat Dec 28 15:55:32 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/guidelines.html: added a document on guildeline for + publishing and deploying XML + +Fri Dec 27 20:35:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c xmlreader.c: final touch running DTD validation + on the XmlTextReader + * python/tests/Makefile.am python/tests/reader2.py: added a + specific run based on the examples from test/valid/*.xml + +Fri Dec 27 15:17:20 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml.py: added a few predefined xmlTextReader parser + configuration values. + +Fri Dec 27 12:57:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml_wrap.h: trying to fix #102037 + +Fri Dec 27 12:18:14 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixing bug #95296, when the predefined entities + are redefined in the DTD the default one must be used + instead anyway. + +Wed Dec 25 19:22:06 MST 2002 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml + * doc/xmllint.1 + Add discussion of XML_DEBUG_CATALOG to xmllint man + page - bug #100907 + +Mon Dec 23 16:54:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c: Fixed the empty node detection to avoid reporting + an inexistant close tag. + +Mon Dec 23 15:42:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/setup.py.in: patch from Stéphane Bidoul + for Python 2.1 + +Sun Dec 22 11:24:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * testC14N.c vms/config.vms: applied Craig A. Berry patches for VMS + +Fri Dec 20 11:27:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/libxml2-api.xml python/tests/reader.py: one really need + to provide the base URI information when creating a reader parser + from an input stream. Updated the API and the example using it. + +Fri Dec 20 01:11:30 CET 2002 Daniel Veillard <daniel@veillard.com> + + * testReader.c xmlreader.c valid.c include/libxml/tree.h + include/libxml/valid.h include/libxml/xmlreader.h: working on + DTD validation on top of xml reader interfaces. Allows to + validate arbitrary large instances. This required some extensions + to the valid module interface and augmenting the size of xmlID + and xmlRef structs a bit. + * uri.c xmlregexp.c: simple cleanup. + +Wed Dec 18 15:51:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h doc/libxml2-api.xml: more + work on the xml reader interfaces. + * AUTHORS MAINTAINERS doc/* win32/*: updated Igor's mail and the + Web page for the Windows binaries. + +Tue Dec 17 19:31:07 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied a patch for VMS following the report by + Nigel Hall + +Tue Dec 17 11:29:41 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: the parseStartTag bug fix wasn't complete. + +Mon Dec 16 23:00:05 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Vyacheslav Pindyura managed to trigger a bug in + parseStartTag, fixing it. + * test/att4 result/att4 result/noent/att4: adding the test + * xmlreader.c include/libxml/xmlreader.h doc/libxml2-api.xml: added + more methods to XmlTextReader. + +Mon Dec 16 19:31:16 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: added more xml reader exports + * win32/Makefile.msvc win32/Makefile.mingw: added xml reader interface + to the build + +Mon Dec 16 06:36:54 MST 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml + plus generated html and pdf + Updating tutorial again based on further comments from Niraj + Tolia on the last iteration + +Sun Dec 15 21:27:30 MST 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml + * doc/tutorial/includekeyword.c + * doc/tutorial/includegetattribute.c + plus generated html and pdf + Adding fix from Niraj Tolia to tutorial to properly free memory. + +Mon Dec 16 00:34:25 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c include/libxml/xmlreader.h doc/libxml2-api.xml: added + more methods of XmlTextReader. + * python/libxml2class.txt python/tests/reader.py: this increased the + methods in the bndings, augmented the test to check those new + functions. + +Sat Dec 14 23:57:39 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlreader.c doc/libxml2-api.xml: added the close and getattribute + methods of XmlTextReader. + * python/generator.py python/libxml_wrap.h python/types.c + python/libxml2class.txt: added the reader to the Python bindings + * python/tests/Makefile.am python/tests/reader.py: added a specific + test for the Python bindings of the Reader APIs + * parser.c: small cleanup. + +Fri Dec 13 11:39:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: fallback was only copying the first child not the + full child list of the fallback element, closes #89684 as reopened + by Bernd Kuemmerlen + +Thu Dec 12 13:34:59 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: exported htmlNodeDumpOutput + +Thu Dec 12 10:59:11 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing release of 2.4.30 + * doc/apibuild.py doc/libxml2-api.xml: fixups to the api builder, + gives enum values, fix functype return type, put back fields in + structs + * doc/*: updated the docs rebuilt + +Thu Dec 12 01:09:34 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c include/libxml/HTMLtree.h: patch from Mark Vakoc + about htmlNodeDumpOutput location. + * xpath.c: removed an undefined function signature + * doc/apibuild.py doc/libxml2-api.xml: the script was exporting + too many symbols in the API breaking the python bindings. + Updated with the libxslt/libexslt changes. + +Wed Dec 11 20:26:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing release of 2.4.29 + * doc/*: rebuilt the docs and API + * xmlreader.c: a few more fixes for the XmlTextReader API + +Wed Dec 11 18:01:15 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * include/win32config.h: applied mingw patch from Magnus Henoch + +Wed Dec 11 16:58:48 CET 2002 Daniel Veillard <daniel@veillard.com> + + * catalog.c doc/libxml2-api.xml: a bit more cleanup + +Wed Dec 11 14:54:47 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/apibuild.py doc/libxml2-api.xml doc/Makefile.am: new API + building Python script, does the C parsing directly, generates + a better API description including structure fieds defs and + enums. Still a couple of bugs, but good enough for the python + wrappers now. + * DOCBparser.c SAX.c nanohttp.c parser.c parserInternals.c tree.c + valid.c xmlIO.c xmlmemory.c xmlreader.c xmlregexp.c xmlschemas.c + include/libxml/schemasInternals.h include/libxml/tree.h: more + cleanup based on the python analysis script reports. + * libxml.spec.in: make sure the API XML description is part of the + devel package. + +Tue Dec 10 16:16:34 CET 2002 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c HTMLparser.c c14n.c debugXML.c encoding.c hash.c + nanoftp.c nanohttp.c parser.c parserInternals.c testC14N.c + testDocbook.c threads.c tree.c valid.c xmlIO.c xmllint.c xmlmemory.c + xmlreader.c xmlregexp.c xmlschemas.c xmlschemastypes.c xpath.c: + code cleanup, especially the function comments. + * tree.c: fixed a small bug when freeing nodes which are XInclude ones. + +Mon Dec 9 15:08:17 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am xmlreader.c include/libxml/Makefile.am + include/libxml/xmlreader.h: Adding a new set of APIs based on + the C# TextXmlReader API but converted to C. Allow to parse + in constant memory usage, far simpler to program and explain + than the SAX like APIs, unfinished but working. + * testReader.c: test program + +Sun Dec 8 18:36:01 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: applied YALDSP from Mark Vakoc + +Wed Dec 4 16:08:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: Chip turner indicated that XHTML1 serialization + rule for style actually break on both IE and Mozilla, + try to avoid the rule if escaping ain't necessary + +Wed Dec 4 12:43:28 CET 2002 Daniel Veillard <daniel@veillard.com> + + * nanhttp.c: handle HTTP URL escaping, problem reported by + Glen Nakamura and Stefano Zacchiroli + +Sat Nov 30 12:19:17 CET 2002 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c HTMLparser.c parser.c valid.c xpath.c: code cleanup + +Thu Nov 28 12:53:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * uri.c: Johann Richard pointed out some XPointer problems for + URN based URI references in XInclude. Modified the URI parsing + and saving routines to allow correct parsing and saving of + XPointers, especially when attached to "opaque" scheme accordingly + to RFC 2396 + +Wed Nov 27 20:36:08 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c include/libxml/HTMLtree.h: applied the same kind + of refactoring to the HTML saving code. + * doc/libxml2-*.xml doc/API*.html: slight API changes got reflected + in the doc. + +Wed Nov 27 12:40:16 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c include/libxml/tree.h: refactored the XML dump of a node + to a buffer API to reuse the generic dump to an OutputIO layer, + this reduces code, fixes xmlNodeDump() for XHTML, also made + xmlNodeDump() now return the number of byte written. + +Wed Nov 27 09:00:00 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/setup.py.in: another patch from Stéphane Bidoul for + Python bindings on Windows + * doc/parsedecl.py: small cleanup + +Mon Nov 25 17:28:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in configure.in: add a line in %changelog for releases + +Mon Nov 25 14:18:27 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: patch from Marcus Clarke fixing a problem in entities + parsing that was detected in KDe documentations environment. + +Mon Nov 24 14:13:21 CET 2002 ERDI Gergo <cactus@cactus.rulez.org> + + * python/libxml.c (libxml_prev): Return the previous as opposed to + the next node (I guess this is the result of some cut & paste programming:) + +Sat Nov 23 17:22:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am: Jan Rafaj pointed a bug in the Makefile. + +Sat Nov 23 12:21:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/setup.py.in: trying + to fix the Python bindings build on Windows (Stéphane Bidoul) + +Fri Nov 22 22:41:34 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/configure.js: added option for python bindings + * win32/libxml2.def.src: added more exports + +Fri Nov 22 18:50:34 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/Makefile.mingw: fixed unresolved symbols when linking with + pthreads + * win32/wince/*: applied updates to Windows CE port from Javier + +Fri Nov 22 15:51:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.28 + * libxml.spec.in doc/Makefile.am: some cleanup + * doc/*: updated the news and regenerated. + +Fri Nov 22 14:15:14 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: final touch at closing #87235 </p> end tags + need to be generated. + * result/HTML/cf_128.html result/HTML/test2.html result/HTML/test3.html: + this change slightly the output of a few tests + * doc/*: regenerated + +Fri Nov 22 13:26:19 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fixing bug #99190 when UTF8 document are + parsed using the progressive parser and the end of the chunk + is in the middle of an UTF8 multibyte character. + +Fri Nov 22 13:13:00 HKT 2002 William Brack <wbrack@mmm.com.hk> + + * threads.c: fixed initialization problem in xmlNewGlobalState + which was causing crash. + * globals.c: removed duplicate call to initxmlDefaultSAXHandler + in xmlInitializeGlobalState. + * parserInternals.c: cleaned up ctxt->sax initialisation. + +Thu Nov 21 15:05:45 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c include/libxml/tree.h: modified the existing APIs + to handle XHTML1 serialization rules automatically, also add + xmlIsXHTML() to libxml2 API. Some tweaking to make sure + libxslt serialization uses it when needed without changing + the library API. + * test/xhtml1 result/noent/xhtml1 result/valid/xhtml1.xhtml + result/xhtml1: added a new test specifically for xhtml1 output + and updated the result of one XHTML1 test + +Wed Nov 20 14:24:56 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c parserInternals.c encoding.c: fixed #99082 + for xi:include encoding="..." support on text includes. + * result/XInclude/tstencoding.xml test/XInclude/docs/tstencoding.xml + test/XInclude/ents/isolatin.txt : added a specific regression test + * python/generator.py python/libxml2class.txt: fixed the generator + the new set of comments generated for doc/libxml2-api.xml were + breaking the python generation. + +Tue Nov 19 23:25:47 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am: repair some problem if gtk-doc fail or such + * configure.in: patch for Solaris on new autoconf closes #98880 + * doc/parsedecl.py: repair the frigging API building script, + did I say that python xmllib sucks ? + * doc/libxml2-api.xml doc/libxml2-refs.xml: regenerated, reordering + and some comment are no more truncated. + +Tue Nov 19 09:09:04 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Martin Stoilov pointed out a potential leak in + xmlCreateMemoryParserCtxt + +Mon Nov 18 16:05:51 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed bug #98879 a corner case when 0 is + included in HTML documents and using the push parser. + +Mon Nov 18 00:11:24 CET 2002 ERDI Gergo <cactus@cactus.rulez.org> + + * configure.in (PYTHON_SITE_PACKAGES): If --with-python is + specified, look for the Python interpreter not just in the + specified root but also in the specified location. Fixes #98825 + +Sun Nov 17 23:36:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: fixing bug #98792 , node may have no doc + and dereferencing without checking ain't good ... + +Sun Nov 17 10:25:43 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing release 2.4.27 + * doc/* : updated and rebuilt the docs + * doc/Makefile.am libxml.spec.in: try to make sure the tutorial + and all the docs are actually packaged and in the final RPMs + * parser.c parserInternals.c include/libxml/parser.h: restore + xmllint --recover feature. + +Sat Nov 16 16:30:25 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c xpath.c: fixing #96925 wich was also dependent on the + processing of parsed entities, and XPath computation on sustitued + entities. + * testXPath.c: make sure entities are substitued. + +Fri Nov 15 16:22:54 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed #96594, which was totally dependent on the + processing of internal parsed entities, which had to be changed. + +Fri Nov 15 12:16:07 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am python/Makefile.am python/tests/Makefile.am: + trying to fix bug #98517 about building outside the source tree + * doc/xml.html doc/FAQ.html: fixed the link to libiconv #94585 + +Thu Nov 14 18:41:55 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * include/win32config.h: cleanup + * win32/Makefile.mingw: integrated mingw in JScript configure + * win32/Makefile.msvc: modified to allow mingw coexistence + * win32/configure.js: integrated mingw + * win32/Readme.txt: cleanup + +Tue Nov 12 22:06:45 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: strengthen the guard in the Pop macros, + like in the XML parser, closes bug #97315 + +Tue Nov 12 21:56:39 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h: fixed bug #98338 , fatalError SAX + callback is never used. + +Tue Nov 12 13:32:50 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: fixed the initialization of the SAX structure + which was breaking xsltproc + * xpath.c: patch from Petr Pajas for CDATA nodes + * tree.c: patch from Petr Pajas improving xmlGetNodePath() + * parser.c include/libxml/parser.h: patch from Peter Jones + removing a leak in xmlSAXParseMemory() and adding the + function xmlSAXParseMemoryWithData() + +Mon Nov 11 20:47:03 MST 2002 John Fleck <jfleck@inkstain.net> + + adding pdf of tutorial, changing web page to link to it + * doc/tutorial/xmltutorial.pdf + * doc/xml.html + * doc/docs.html + +Sun Nov 10 20:48:57 MST 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/ar01s08.html + adding file what I forgot for tutorial + +Sun Nov 10 20:33:13 MST 2002 John Fleck <jfleck@inkstain.net> + + Adding encoding discussion to tutorial + Added: + * doc/tutorial/images/*.png: DocBook admonition image files + * doc/tutorial/apf.html, apg.html: new generated html + * doc/tutorial/includeconvert.c: conversion code entity file + changed: + * doc/tutorial/xmltutorial.xml: DocBook original + * doc/tutorial/*.html: generated html + +Fri Nov 8 17:59:32 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * include/libxml/*.h: retired xmlwin32version.h + * doc/Makefile.am: retired xmlwin32version.h + * win32/configure.js: retired xmlwin32version.h + +Fri Nov 8 16:55:47 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: exported additional symbols + * include/libxml/xmlmemory.h: exported the rest of the xmlMem* + sisterhood + +Fri Nov 8 16:08:13 CET 2002 Daniel Veillard <daniel@veillard.com> + + * globals.c: fixed a typo pointed out by Igor + * xpath.c: try to speed up node compare using line numbers + if available. + +Thu Nov 7 15:16:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: make xmlFreeNode() handle attributes correctly. + +Wed Nov 6 23:51:11 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * catalog.c: completed the #96963 fix, as reported by Karl + Eichwalder + +Wed Nov 6 16:48:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpointer.c: tried to fix bug #97852 reported by Nicolas Noffke + +Sun Nov 3 10:43:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: switched the order of a couple of includes + to fix bugs #97100 + +Thu Oct 31 17:11:46 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * catalog.c: fixed bug #96963, reverted to the old behaviour of + xmlLoadCatalogs that used to separate directories with a ':'. + +Thu Oct 31 16:55:21 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * threads.c: improvements to the Windows-side of thread handling + * testThreads.c: conditionally excluded unistd.h + * testThradsWin32.c: broke overlong lines + * include/win32config.h: adapted thread-related macros to the new + scheme and for pthreads on Windows + * win32/Makefile.msvc: introduced a more flexible thread build, + added testThreads[Win32].c to the build + * win32/configure.js: introduced a more flexible thread config + +2002-10-31 John Fleck <jfleck@inkstain.net> + + * doc/xml.html (and, by implication, FAQ.html) + added UTF-8 conversaion FAQ from Marcus Labib Iskander + +Tue Oct 29 18:32:33 CET 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * configure.in: removed xmlwin32version.h + * include/libxml/Makefile.am: removed xmlwin32version.h + +Mon Oct 28 14:01:29 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Brian Stafford to fix a bug + in xmlReconciliateNs() + +Mon Oct 28 13:51:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Christian Glahn to allow + xmlNewChild() on document fragment nodes + +Sat Oct 26 15:27:00 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Christian Glahn found a problem with a recent + patch to xmlParseBalancedChunkMemoryRecover() + * xmlschemas.c: Charles Bozeman fixed some Schemas validation + problems + * result/schemas/elem* result/schemas/seq* test/schemas.elem* + test/schemas/seq*: added the test cases from Charles + +Wed Oct 23 16:42:29 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am config.h.in libxml.spec.in doc/Makefile.am: + serious cleanup of the spec file and associated changes + in the Makefiles. + * valid.c: try to remove some warnings on x86_64 + +Wed Oct 23 10:53:42 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * include/Makefile.am: added winsockcompat.h to EXTRA_DIST to + fix bug #96586 + +Tue Oct 22 21:13:06 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: Mikhail Sogrine pointed out a bug in HTML + parsing, applied his patch + * result/HTML/attrents.html result/HTML/attrents.html.err + result/HTML/attrents.html.sax test/HTML/attrents.html: + added the test and result case provided by Mikhail Sogrine + +Tue Oct 22 19:33:20 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * vms/build_libxml.com vms/config.vms vms/readme.vms + include/libxml/parser.h include/libxml/parserInternals.h + include/libxml/tree.h include/libxml/xmlIO.h + HTMLparser.c catalog.c debugXML.c parser.c parserInternals.c + tree.c triodef.h trionan.c uri.c xmlIO.c xpath.c: + Applied the VMS update patch from Craig A. Berry + * doc/*.html: update + +Tue Oct 22 16:27:31 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/encoding.h encoding.c: made xmlGetUTF8Char public + +Tue Oct 22 16:25:18 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: adding a grep command to --shell in xmllint + for T.V. Raman + +Tue Oct 22 16:23:57 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c: tried to fix some of the problem with --sgml + +Mon Oct 21 09:57:10 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: tried to fix bug #91500 where doc->children may + be overriden by a call to xmlParseBalancedChunkMemory() + +Mon Oct 21 09:04:32 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * catalog.c: tried to fix bug #90945 w.r.t. parsing of system + identifiers in SGML catalogs containing '&' + +Sun Oct 20 23:31:47 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/types.c: fixed bugs when passing result value tree + to Python functions. + +Fri Oct 18 13:18:53 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing the release of 2.4.26 + * doc/*: updated and rebuilt the documentation + +Wed Oct 16 20:01:46 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a XML Namespace compliance bug reported by + Alexander Grimalovsky + +Wed Oct 16 17:18:42 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixed serialization of script and style when + they are not lowercase (i.e. added using the API to the tree). + +Wed Oct 16 16:31:05 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: make xmlValidateDocument emit a warning msg if there + is no DTD, pointed by Christian Glahn + +Wed Oct 16 16:05:38 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: fixed the validation of sequences + content model when some of the blocks have min or max, and a couple + of bugs found in the process. + * result/schemas/list0* test/schemas/list0*: added some specific + regression tests + +Tue Oct 15 12:41:01 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * README: updated the contact informations + +Tue Oct 15 10:35:57 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: use test -f instead of test -e since Solaris /bin/sh + misses it, reported by Peter Bray. + +Mon Oct 14 17:37:32 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: investigating xmlNodeGetContent() on namespace nodes + and removed a few warnings + +Mon Oct 14 13:12:55 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Christian Glahn found a small bug in the push parser. + * xmlIO.c include/libxml/xmlIO.h: cleaned up and made xmlCheckFilename + public + +Wed Oct 9 23:11:02 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c include/libxml/xmlschemas.h: added + xmlSchemaNewMemParserCtxt to parse a schemas from a memory area + * testSchemas.c: added --memory to test the new interface + +Wed Oct 9 16:22:54 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/index.py doc/search.php: integrated the XSLT indexing, + a few fixed in the indexer, added a scope selection at the + search level. + +Wed Oct 9 12:18:37 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: Joe Marcus Clarke reported a segfault on FBsd + this was due to uninitialized parts of the validation context + +Tue Oct 8 23:24:20 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: applied patch from Mark Vakoc except the API + change, preserved it. + * doc/*: updated the docs to point to the search engine for + information lookup or before bug/help reports. + +Tue Oct 8 18:53:31 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/index.py doc/search.php: added mailing-list archives + indexing and lookup + +Tue Oct 8 10:25:07 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: patch from Mark Vakoc to fix xmlNodeGetPath() + +Mon Oct 7 13:12:03 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/index.py: improved HTML indexing + * doc/search.php: make the queries also lookup the HTML based indexes + +Sun Oct 6 23:50:29 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/index.py: added HTML page indexing + +Fri Oct 4 15:33:55 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * xmlIO.c: extended Windows path normalisation to fix the base + problem in libxslt. + * catalog.c: fixed list handling in XML_CATALOG_FILES + +Fri Oct 4 13:43:02 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: typo/bug found by Christian Glahn + +Sun Sep 29 19:44:10 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * xmlIO.c: applied Windows CE patch from Javier. + * win32/wince: new directory, contains support for the PocketPC + with Windows CE from Javier. + * include/win32config.h: reorganised, removed duplicate + definitions and applied WinCE patch from Javier. + * include/wsockcompat.h: new file, now contains WinSock + compatibility macros. + * win32/Makefile.msvc: introduced double-run compilation. + +Thu Sep 26 19:48:06 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing release + of 2.4.25 + * doc/*: updated and regenerated teh docs and web pages. + +Thu Sep 26 17:33:46 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c valid.c include/libxml/valid.h: fixed bug #92518 validation + error were not covering namespace declarations. + * result/valid/dia.xml test/valid/dia.xml: the test wasn't valid, + it was missing the attribute declaration for the namespace + * result/VC/NS3: the fix now report breakages in that test + +Thu Sep 26 14:39:07 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixing bug #94241 on HTML boolean attributes + +Thu Sep 26 14:25:33 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/*: added the 3 new modules xmlregexp xmlautomata and xmlunicode + and regenerated the docs and web site + +Thu Sep 26 11:45:42 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c xmlschemas.c xmlschemastypes.c xpath.c: make sure + ATTRIBUTE_UNUSED is always put after the attribute declaration, + not before + +Thu Sep 26 11:33:28 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml2class.txt: fixed a stupid error + breaking the python API + +Thu Sep 26 00:31:46 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * trio.c trio.h triodef.h trionan.c trionan.h triop.h + triostr.c triostr.h: applied a trio update patch from + Bjorn Reese which should work with MinGW + +Thu Sep 26 00:21:18 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: improving some documentation comments + * xmlregexp.c: found and fixed a mem leak with python regression tests + * doc/*: rebuilt the doc and the API XML file including the + xmlregexp.h xmlautomata.h and xmlunicode.h headers + * python/generator.py python/libxml2class.txt python/libxml_wrap.h + python/types.c: added access to the XML Schemas regexps from + python + * python/tests/Makefile.am python/tests/regexp.py: added a + simple regexp bindings test + +Tue Sep 24 08:10:48 MDT 2002 John Fleck <jfleck@inkstain.net> + + * doc/xml.html: + fixing ftp links - thanks to Vitaly Ostanin + +Tue Sep 24 16:08:17 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: fixed the data callback on transition functionality + which was broken when using the compact form + * result/schemas/*: updated the results, less verbose, all tests + pass like before + * DOCBparser.c testAutomata.c testC14N.c testSchemas.c testThreads.c + testXPath.c valid.c xinclude.c xmllint.c xmlregexp.c xmlschemas.c + xmlschemastypes.c xpath.c python/libxml.c: removed a bunch of + annoying warnings + * xpath.c: try to provide better error report when possible + +Sat Sep 21 14:56:37 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: fixed a breakage raised by Jacob + +Fri Sep 20 20:08:18 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * include/win32config.h: added HAVE_ERRNO_H definition for parts + which don't use sockets + +Fri Sep 20 18:40:50 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/Makefile.msvc: applied zlib patch from Daniel Gehriger + * win32/configure.js: applied zlib patch from Daniel Gehriger + +Fri Sep 20 15:40:14 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/configure.js: applied the patch from Mark Vakoc for + regexp support + * win32/libxml2.def.src: applied the patch from Mark Vakoc + for regexp support + +Fri Sep 20 15:35:33 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: as pointed by Igor Float and Double + parsing ain't finished yet + +Fri Sep 20 14:00:16 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in: trying to fix #88412 by bypassing + all the python subdir if python ain't detected + +Thu Sep 19 21:46:53 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in include/libxml/xmlversion.h.in: + made configuring with regexps/automata/unicode the default + but without schemas ATM + * testRegexp.c valid.c xmlregexp.c include/libxml/xmlregexp.h: + fixed the regexp based DTD validation performance and memory + problem by switching to a compact form for determinist regexps + and detecting the determinism property in the process. Seems + as fast as the old DTD validation specific engine :-) despite + the regexp built and compaction process. + +Wed Sep 18 18:27:26 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: determinism is debugged, new DTD checking code now works + but xmlFAComputesDeterminism takes far too much CPU and the whole + set usues too much memory to be really usable as-is + +Wed Sep 18 00:54:30 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed another stupid bug in xmlGetNodePath() + * xmllint.c: --version now report the options compiled in + +Tue Sep 17 23:48:07 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: small cleanup + * valid.c xmlregexp.c: switched DTD validation to use only regexp + when configured with them. A bit of debugging around the determinism + checks is still needed + +Tue Sep 17 21:22:25 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml_wrap.h: stupid bug found by mattam@netcourrier.com + +Tue Sep 17 19:58:26 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: small portability glitch fixed. + +Mon Sep 17 12:38:08 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: incomplete steps for real/double support + * testAutomata.c include/libxml/xmlautomata.h + include/libxml/xmlregexp.h: avoiding a compilation problem + * valid.c include/libxml/valid.h: starting the work toward using + the regexps for actual DTD validation + +Fri Sep 13 16:46:14 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * hash.c: cosmetic cleanup + * valid.c include/libxml/tree.h include/libxml/valid.h: started + integrating a DTD validation layer based on the regexps + +Thu Sep 12 18:01:29 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c: fixed a bug reported by Jeff Goff, + the determinism was tested before eliminating the epsilon + transitions :-( + +Thu Sep 12 16:57:45 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml.py + python/libxml2-python-api.xml python/libxml2class.txt + python/libxml_wrap.h python/types.c: updated the python + bindings, added code for easier File I/O, and the ability to + define a resolver from Python fixing bug #91635 + * python/tests/Makefile.am python/tests/inbuf.py + python/tests/outbuf.py python/tests/pushSAXhtml.py + python/tests/resolver.py python/tests/serialize.py: updated + and augmented the set of Python tests. + +Tue Sep 10 21:05:28 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/configure.js: added more readme info for the binary + package. + +Tue Sep 10 14:15:18 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fixed a stupid out of bound array error + +Tue Sep 10 13:09:14 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlIO.h xmlIO.c parser.c HTMLparser.c DOCBparser.c: + messing around with support for Windows path, cleanups, + trying to identify and fix the various code path to the + filename access. Added xmlNormalizeWindowsPath() + +Thu Sep 5 16:19:18 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * error.c valid.c: working on better error reporting of validity + errors, especially providing an accurate context. + * result/valid/xlink.xml.err result/valid/rss.xml.err: better + error reports in those cases. + +Thu Sep 5 13:29:47 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c HTMLparser.c c14n.c entities.c list.c + parser.c parserInternals.c xmlIO.c: get rid of all the + perror() calls made in the library execution paths. This + should fix both #92059 and #92385 + +Thu Sep 5 13:13:17 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: memory leak reporting was broken after a change + of the preprocessor symbol used to activate it. + +Thu Sep 5 13:10:57 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: try to make the copy function work for node of + type XML_DOCUMENT_FRAG_NODE, they are only created by the + DOM layers though, not libxml2 itself. + +Thu Sep 5 12:57:38 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: try to provide file and line informations, not all + messages are covered, but it's a (good) start + +Thu Sep 5 12:49:35 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: reimplemented a large part of the XInclude + processor, trying to minimize resources used, James Henstridge + provided a huge test case which was exhibiting severe memory + consumption problems. + +Thu Sep 5 10:07:13 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: applied patch from Christophe Merlet to + reestablish DESTDIR + +Wed Sep 4 14:13:34 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: fixes libary path for x86_64 AMD + +Tue Sep 3 21:14:19 MDT 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/includekeyword.c + * doc/tutorial/xmltutorial.xml: + (plus resulting generated html files) + fixing one spot I missed in the tutorial where I hadn't freed + memory properly + +Sat Aug 31 19:31:17 MDT 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/includeaddattribute.c + * doc/tutorial/includeaddkeyword.c + * doc/tutorial/includegetattribute.c + * doc/tutorial/includekeyword.c + * doc/tutorial/xmltutorial.xml + * doc/tutorial/*.html: + update tutorial to properly free memory (thanks to Christopher + R. Harris for pointing out that this needs to be done) + * doc/tutorial/images/callouts/*.png: + added image files so the callouts are graphical, making it + easier to read ( use "--param callout.graphics 1" to generate + html with graphical callouts) + +Wed Aug 28 13:44:54 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/Libxml2-Logo-180x168.gif doc/Libxml2-Logo-90x34.gif: + nice logos generated by Marc Liyanage + * doc/site.xsl *.html: changed the stylesheet to show the new + logo and regenerated the pages + +Sun Aug 25 16:38:05 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: handle Windows sepecific file://localhost/ semantic ... + +Thu Aug 22 22:03:19 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: possible mem leak patch from Jason Adams + +Thu Aug 22 17:27:30 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: integrated xf:escape-uri() from Wesley Terpstra + in the XQuery namespace + * configure.in: preparing 2.4.24 + * doc/*.html: updated the web pages + +Thu Aug 22 16:19:42 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: closing bug #85258 by generating conditional + compile check to avoid linking to routines not configured in. + +2002-08-22 Havoc Pennington <hp@pobox.com> + + * autogen.sh: update error message for missing automake + +Thu Aug 22 11:45:50 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: typo in target name resulted in libxml2.py + to not be rebuilt. fixed DESTDIR similary to the libxslt one. + +Thu Aug 22 09:15:00 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * win32/win32/Makefile.mingw: updated with version from + Elizabeth Barham at http://soggytrousers.net/repository/ + +Tue Aug 20 16:40:48 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/Makefile.msvc: added the prefix location to the include + and lib search path. + +2002-08-18 Havoc Pennington <hp@pobox.com> + + * autogen.sh: hardcode aclocal-1.4/automake-1.4 so that users with + both automake 1.6 and 1.4 installed get the right automake. Means + compilation from CVS will now require the latest automake 1.4 + release, or manually creating symlinks called "automake-1.4" and + "aclocal-1.4" + +Wed Aug 14 18:54:19 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in python/Makefile.am: more AMD 64 induced changes from + Frederic Crozat + +Wed Aug 14 16:43:53 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: oops I was missing the xml:base fixup too + * result/XInclude/*.xml: this adds xml:base attributes to most + results of the tests + +Wed Aug 14 16:05:37 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xinclude.c: quick but apparently working implementation of + xi:fallback, should close bug #89684 + * Makefile.am test/XInclude/docs/fallback.xml + result/XInclude/fallback.xml: added a basic test for fallback, + and run with --nowarning to avoid a spurious warning + * configure.in: applied patch from Frederic Crozat for python + bindings on AMD 64bits machines. + +Wed Aug 14 10:47:46 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: xmlSAXUserParseMemory() really ought to fail if + the caller don't pass a SAX callback block. + +Wed Aug 14 10:29:02 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied the same fix for the XML-1.0 namespace to + xmlSearchNsByHref() as was done for xmlSearchNs() + +Mon Aug 12 16:52:08 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.3: small cleanup of the man page + * HTMLtree.c: fixed a potential problem raised by Petr Vandrovec + when serializing HREF attributes generated by XSLT. + +Mon Aug 12 15:24:05 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c include/libxml/HTMLtree.h: integrated a cleaned up + version of Marc Liyanage' patch for boolean attributes in HTML + output + +Mon Aug 12 14:11:59 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/tests/serialize.py: fixed the test results, indenting + behaviour changed slightly + +Thu Aug 8 11:00:26 2002 Aleksey Sanin <aleksey@aleksey.com> + + * win32/dsp/libxml2.def.src win32/libxml2.def.src: added + new c14n function to Windows def files + +Fri Aug 2 16:46:46 2002 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c: fixed a memory leak in c14n code + +Sat Aug 3 00:15:06 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/parser.h: adding a new API for Christian + Glahn: xmlParseBalancedChunkMemoryRecover + * valid.c: patch from Rick Jones for some grammar cleanup in + validation messages + * result/VC/* result/valid/*: this slightly change some of the + regression tests outputs + +Thu Aug 1 14:50:28 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: trying to fix a problem in namespaced attribute handling + raised by Christian Glahn + +Thu Aug 1 12:17:30 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * encoding.c include/libxml/encoding.h: Opening the interface + xmlNewCharEncodingHandler as requested in #89415 + * python/generator.py python/setup.py.in: applied cleanup + patches from Marc-Andre Lemburg + * tree.c: fixing bug #89332 on a specific case of loosing + the XML-1.0 namespace on xml:xxx attributes + +Wed Jul 31 23:27:42 2002 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c include/libxml/c14n.h: fixed one more c14n + namespaces + corner case from new Merlin's test suite and added a callback + that will be used to improve xmlsec performance + +Mon Jul 29 18:22:00 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: trying to fix the <style> escaping problem in + HTML serialization bug #89342 + +Thu Jul 25 01:33:47 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/*.html: applied syntax patch from Rick Jones + and rebuilt the web site. + +Mon Jul 22 11:04:48 PDT 2002 Aleksey Sanin <aleksey@aleksey.com> + + * include/libxml/tree.h: added _private member to xmlNs struct + +Sun Jul 21 17:48:47 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixing bug #84876 based on the xml working + code. + +Sun Jul 21 19:15:00 HKT 2002 William Brack <wbrack@mmm.com.hk> + + * python/Makefile.am: enhanced to fix bug 72012 (errors + when using '-jX' make parameter) + +Fri Jul 19 16:35:00 HKT 2002 William Brack <wbrack@mmm.com.hk> + + * xpath.c: small additional enhancement for booleans + compared to nodesets + +Wed Jul 17 19:48:14 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: changed the order of the encoding declaration + attributes in the meta tags due to a bug in IE/Mac + +Fri Jul 12 08:45:00 HKT 2002 William Brack <wbrack@mmm.com.hk> + + * xpath.c: enhanced handling of booleans (especially '=' + and '!=' for nodesets) - fixes bug 85256. Added new + routine xmlXPathNotEqualValues for more proper handling + of '!=' when nodesets are involved. + +Thu Jul 11 21:45:52 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am: fixing Red Hat bug #68614 by adding the + doc/xmlcatalog_man.xml to the source distribution + +Wed Jul 10 21:26:13 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/Makefile.msvc: Added a copy *.pdb to install, few have + asked for this. + +Sat Jul 6 21:55:59 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.23 + * doc/*: rebuilt the docs + +Sat Jul 6 21:11:20 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixing bug #84169 by fixing the + comment of xmlCreatePushParserCtxt to describe the + encoding detection parameters better. + +Sat Jul 6 19:44:56 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixing bug #79331 in one path the lookup for + ID attributes on a namespaced node wasn't handled correctly :-\ + +Fri Jul 5 20:07:43 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: trying to fix 87235 about discarded white + spaces in the HTML parser. + * result/HTML/*: this changes the output of a number of HTML + regression tests + +Mon Jul 1 23:23:41 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: applied patch from Richard Jinks for the namespace + axis + fixed a memory error. + * parser.c parserInternals.c: applied patches from Peter Jacobi + removing ctxt->token for good. + * xmlschemas.c xmlschemastypes.c: fixed a few memory leaks + popped out by the regression tests. + * Makefile.am: patch for threads makefile from Gary Pennington + +Fri Jun 28 19:38:00 HKT 2002 William Brack <wbrack@mmm.com.hk> + + * xpath.c: enhanced behaviour of position() after usage of + expressions involving preceding-sibling (et al). + +Tue Jun 18 09:58:48 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * hash.c: applied a patch from Peter Jacobi to solve a problem + when compiling with the Watcom C on Win32 + * result/schemas/*.err: the change of hashing algo generated + permutations in the output + +Mon Jun 17 19:02:49 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * hash.c: applied patch from Sander Vesik improving the quality of + the hash function. + +2002-06-14 Aleksey Sanin <aleksey@aleksey.com> + + * DOCBparser.c HTMLparser.c debugXML.c encoding.c + nanoftp.c nanohttp.c parser.c tree.c uri.c xmlIO.c + xmllint.c xpath.c: replaced sprintf() with snprintf() + to prevent possible buffer overflow (the bug was pointed + out by Anju Premachandran) + +Thu Jun 13 17:30:25 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: removed an uninitialized data error popped by valgrind + on PE references + +Wed Jun 12 21:38:46 MDT 2002 John Fleck <jfleck@inkstain.net> + + * doc/xml.html + adding tutorial reference to the web page + +Wed Jun 12 21:26:08 MDT 2002 John Fleck <jfleck@inkstain.net> + + * doc/tutorial/xmltutorial.xml + * doc/tutorial/ar01s07.html + * doc/tutorial/ape.html + * doc/tutorial/includegetattribute.c + adding section to tutorial about retrieving an attribute + value + +Tue Jun 11 12:07:04 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: applied a couple of patches from Peter Jacobi to start + to get rid of ctxt->token, with a possible significant speed + improvement to be gained once done. Better compliance with PE + references constructs in DTDs too. + * test/valid/t[0-9]* result/valid/t[0-9]*: added a set of tests + from Peter too + +Tue Jun 11 09:25:12 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Babak Vahedipour-Kunze reported that openTag in + xmlParseElement was likely to have been deallocated at the + time of the report, possibly leading to segfault. Just report + the tag name now. + +Mon Jun 10 18:00:02 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: patch from Richard Jinks for XPath substring() function + * result/XPath/expr/strings test/XPath/expr/strings: new set of tests + +2002-06-06 Aleksey Sanin <aleksey@aleksey.com> + + * xmlIO.c: patch from Rachel Hestilow to fix bug #84340 + +Wed Jun 5 19:14:49 MDT 2002 John Fleck <jfleck@inkstain.net> + + *doc/FAQ.html + fixing typos in FAQ, thanks to Robert Funnell for the + editing help + +Wed Jun 5 14:50:24 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * NEWS: got complaints from rpmlint that it was empty + +Tue Jun 4 09:09:18 MDT 2002 John Fleck <jfleck@inkstain.net> + + * added doc/tutorial, including: + apa.html + apb.html + apc.html + apd.html + ar01s02.html + ar01s03.html + ar01s04.html + ar01s05.html + ar01s06.html + includeaddattribute.c + includeaddkeyword.c + includekeyword.c + includestory.xml + index.html + xmltutorial.xml + libxml tutorial, including generated html + +Mon Jun 3 21:21:26 2002 Aleksey Sanin <aleksey@aleksey.com> + + * result/c14n/exc-without-comments/merlin-c14n-two-* + result/c14n/without-comments/merlin-c14n-two-* + test/c14n/exc-without-comments/merlin-c14n-two-* + test/c14n/without-comments/merlin-c14n-two-* + testC14N.c Makefile.am: added merlin-c14n-two.tar.gz tests for + c14n/exc-c14n and slightly modified test script to handle + these test cases + * c14n.c: fixed bugs for complicated nodes set (namespace + without node and others from merlin-c14n-two.tar.gz) + * include/libxml/xpathInternals.h win32/dsp/libxml2.def.src + win32/libxml2.def.src: "opened" xmlXPathNodeSetFreeNs() function + for xmlsec performance patch + * xpath.c: fixed self::node() for namespaces and attributes + +Mon Jun 03 00:04:21 2002 Chema Celorio <chema@ximian.com> + + * tree.h: added xmlDocFormatDump which is just as xmlDocDump + but with the format parameter + * tree.c: made xmlDocDump a wrapper arround xmlDocFormatDump + +Fri May 31 12:16:48 2002 Aleksey Sanin <aleksey@aleksey.com> + + * Makefile.am: updated c14n tests suite + * c14n.c: performance improvement for previous c14n patch + +Fri May 31 11:47:12 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: another peroformance patch from Peter Jacobi, that + time on parsing attribute values. + +Thu May 30 23:34:27 2002 Aleksey Sanin <aleksey@aleksey.com> + + * Makefile.am result/c14n/* test/c14n/*: C14N tests integrated + into LibXML2 test suite + +Thu May 30 21:23:06 2002 Aleksey Sanin <aleksey@aleksey.com> + + * c14n.c: propagating xpath ancesstors node fix to c14n + plus small performance improvement to reduce number of + mallocs + * xpath.c: fixed ancestors axis processing for namespace nodes + +Wed May 29 10:21:39 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c parser.c tree.c include/libxml/tree.h: performance patch from + Peter Jacobi + +Mon May 27 23:18:33 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.22 + +Mon May 27 16:44:04 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c win32/libxml2.def.src win32/dsp/libxml2.def.src + include/libxml/HTMLparser.h: fixing #79334 making htmlParseDocument + a public entry point. + * doc/*: rebuilt the API and docs + +Mon May 27 14:16:28 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: patch from Richard Jinks to fix a problem introduced + in the previous patch and pointed by Norm + +Fri May 24 13:10:22 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: fixing bug #81112 + +Fri May 24 13:03:24 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * uri.c: fixing bug #82848 + +Fri May 24 09:54:49 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * result/catalogs/mycatalog.full: Aleksey's commit changed the + output of one catalog test + +Fri 24 May 2002 12:17:45 AM PDT Aleksey Sanin <aleksey@aleksey.com> + + * global.data globals.c tree.c include/libxml/globals.h + win32/libxml2.def.src win32/dsp/libxml2.def.src: changed + default value for global parameter xmlIndentTreeOutput to 1 and + introduced new global parameter xmlTreeIndentString (the string + used to do one-level indent) with default value " " (as it was + in tree.c) + +Thu May 23 13:55:57 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: Merijn Broeren pointed out a problem when compiling + with trio and schemas. + +Wed May 22 11:57:49 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: patch from Richard Jinks to fix the problem raised in + http://mail.gnome.org/archives/xml/2002-April/msg00246.htm + +Wed May 22 08:38:19 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: a bit of work on import. + * xmlschemastypes.c: Charles Bozeman provided a compare function + for date/time types so min/max facet restrictions should work, + indeterminate comparisons return an error instead of equal. + * test/schemas/date_0* result/schemas/date_0_0: specific test + from Charles Bozeman too + +Sat May 18 09:54:12 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.3 doc/buildDocBookCatalog: apply a couple of patches + from Christian Cornelssen fixing the man pages and the Catalog + building script. + * xmlschemas.c include/libxml/schemasInternals.h: nothing new yet + next step is <xs:import> I now have a reasonable understanding + of how it works. + +Thu May 16 10:43:26 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: applied a small buffer performance patch from Gary Pennington + +Wed May 15 00:25:34 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/libxml2.def.src: exported xmlXPathNodeSetAddNs() + +Tue May 14 13:00:48 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixing an XPath function evalutation bug pointed out + by Alexey Efimov where the context was lost when evaluating + the function arguments + +Mon 13 May 2002 11:37:39 PM PDT Aleksey Sanin <aleksey@aleksey.com> + + * xpath.c include/libxml/xpathInternals.h: maked xmlXPathNodeSetAddNs() + function public for XMLSec performance optimizations + +Mon May 13 12:32:22 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml2class.txt : fixed a problem + with the HTML parser pointed by Gary Benson + * python/tests/Makefile.am python/tests/pushSAXhtml.py: sdding the + example + +Thu 09 May 2002 11:19:00 AM PDT Aleksey Sanin <aleksey@aleksey.com> + * parser.c: fixed bug #81159 (memory growth in SAX) + +Tue 07 May 2002 09:20:21 AM PDT Aleksey Sanin <aleksey@aleksey.com> + * xpath.c: fixed bug #78858 (the real fix) + +Sat 04 May 2002 11:56:31 PM PDT Aleksey Sanin <aleksey@aleksey.com> + * xpath.c: fixed bug #78858 (quick and durty fix to hide the problem) + +Sun May 5 08:57:08 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: modified xmlNodeSetBase to allow changing the + base of a document. + +Fri May 3 09:20:41 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemastypes.c: patch Charles Bozeman for validation of + all the date, time, and duration types + * test/schemas/dur_0* result/schemas/dur_0*: associated tests + * configure.in: fixed an error pointed by an user + * xml2-config.in: fixed an error pointed by an user + +Wed 01 May 2002 11:29:27 AM PDT Aleksey Sanin <aleksey@aleksey.com> + + * include/libxml/xmlIO.h win32/dsp/libxml2.def.src + win32/libxml2.def.src xmlIO.c: exported default + 'file:', 'http:' and 'ftp:' protocols input handlers + and maked protocols comparisson case insensitive + +Tue Apr 30 16:29:05 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: Neven Has detected a typo + +Tue Apr 30 08:48:11 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * AUTHORS HACKING: added Aleksey Sanin <aleksey@aleksey.com> + as one of the persons allowed to commit directly to the + module. + +Mon Apr 29 17:48:26 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing 2.4.21 + * valid.c: raised a too low limit + * doc/*: rebuilt the docs + +Wed Apr 24 13:41:03 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * test/XPath/expr/floats test/XPath/expr/functions + result/XPath/expr/floats result/XPath/expr/functions + xpath.c: another XPath conformance patch from Richard Jinks + +Tue Apr 23 19:50:40 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: fixed validation of attribute groups. + * test/schemas result/schemas: added an example from the primer + +Tue Apr 23 09:11:37 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am xmlschemas.c xmlschemastypes.c: more work on Schemas + * test/schemas result/schemas: updated the test list + +Mon Apr 22 17:59:14 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * TODO: updated a bit + * parser.c: made a comment more specific + * xmlregexp.c xmlschemas.c xmlschemastypes.c: more work on the + Schemas conformance. + * test/schemas result/schemas: updated the test list + +Sat Apr 20 19:36:39 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: + implementing xs:all with minOccurs = 0 + * tes/schemas/* result/schemas/*: added more tests covering + xs:all + +Sat Apr 20 09:22:50 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c: first implementation of the all particle, this + may need to be revisited for case where not all transitions + must be crossed. + +Fri Apr 19 18:26:04 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: another entity processing update from Markus Henke + +Fri Apr 19 17:14:24 CEST 2002 Bjorn Reese <breese@users.sourceforge.net> + + * trionan.c: fixed crash on OSF/1 + +Fri Apr 19 09:00:56 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c: more Schemas work + * test/schemas/* result/schemas/*: added more tests coming + from the spec. + +Thu Apr 18 23:00:02 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: patch from Aleksey Sanin reflecting a change in the + ExcC14N specification + +Thu Apr 18 18:38:30 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: patch from Markus Henke, fix for recursive entities. + +Thu Apr 18 17:49:24 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fix a problem with string() on a document node. + +Thu Apr 18 16:40:42 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am xmlschemas.c: more Schemas work + * test/schemas/* result/schemas/*: added more tests coming + from the spec. + +Thu Apr 18 13:52:52 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixed & serialization bug introduced in 2.4.20 + * result/HTML/*: this changes a few things in the results + +Wed Apr 17 20:34:37 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * include/libxml/tree.h: eliminated 'declaration different than + prototype' warning + * include/win32config.h: "resolved" conflicts with errno.h + +Wed Apr 17 18:26:07 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlregexp.c xmlschemas.c include/libxml/xmlautomata.h: more work + on the automata interfaces and debug of counted choices + * test/schemas/* result/schemas/*: added a number of tests + +Wed Apr 17 11:03:03 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmlschemas.c xmlschemastypes.c include/libxml/xmlschemas.h: + a bit of work on Schemas + * testSchemas.c: try to make it more useful + * test/schemas/* result/schemas/* Makefile.am: changed the + Schemas regression test procedure, started adding a few samples + +Tue Apr 16 19:52:01 CEST 2002 Igor Zlatkovic <izlatkovic@stud.fh-frankfurt.de> + + * include/libxml/encoding.h: Patch for the Borland C++ builder + * include/libxml/tree.h: Patch for the Borland C++ builder + * threads.c: Patch for the Borland C++ builder + * win32/bcb5: New directory for the Borland C++ builder + project files + +Tue Apr 16 19:46:55 CEST 2002 Igor Zlatkovic <izlatkovic@stud.fh-frankfurt.de> + + * win32/Makefile.msvc: Update for XML Schema support + * win32/configure.js: Update for XML Schema support + * win32/libxml2.def.src: Update for XML Schema support + +Tue Apr 16 17:46:43 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am TODO_SCHEMAS configure.in genUnicode.py testAutomata.c + testRegexp.c testSchemas.c xmlregexp.c xmlschemas.c xmlschemastypes.c + xmlunicode.c include/libxml/Makefile.am + include/libxml/schemasInternals.h include/libxml/xmlautomata.h + include/libxml/xmlregexp.h include/libxml/xmlschemas.h + include/libxml/xmlschemastypes.h include/libxml/xmlunicode.h + include/libxml/xmlversion.h.in : merged the current state of + XML Schemas implementation, it is not configured in by default, + a specific --schemas configure option has been added. + * test/automata test/regexp test/schemas Makefile.am + result/automata result/regexp result/schemas: + merged automata/regexp/schemas regression tests + +Tue Apr 16 09:48:44 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: Gary found a compile time problem, fixes #78823 + +Mon Apr 15 19:11:36 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: release of 2.4.20 + * doc/*: updated and rebuilt the docs + +Mon Apr 15 14:55:53 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: patch from Cristian Gafton to build on + Red Hat 6.2, should also fix #75779 + +Mon Apr 15 12:14:49 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: first part of fixing #78729 + +Sun Apr 14 23:44:58 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c uri.c: fixing bug #78662 i.e. add proper + escaping of URI when saving HTML files. + * result/HTML/*: this impacted some tests + +Sun Apr 14 14:55:15 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: trying to fix #77441 + +Fri Apr 12 23:02:16 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlIO.h: Hallski complained it could not be + included by itself. + +Thu Apr 11 10:23:36 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: applied an IEEE flag patch for OSF/1 #77825 + +Wed Apr 10 23:31:34 CEST 2002 Igor Zlatkovic <igor@stud.fh-frankfurt.de> + + * win32/configure.js: patch from Nilo for the c14n option + * win32/Makefile.msvc: fixed libxml2.def generation with threads + +Wed Apr 10 21:24:16 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c include/libxml/xmlwin32version.h.in: Silvan Minghetti + pointed erroneous use of LIBXML_THREADS_ENABLED instead of + LIBXML_THREAD_ENABLED + +Wed Apr 10 18:12:52 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: another patch from Richard Jinks for substring conformance + * test/XPath/expr/floats test/XPath/expr/strings + result/XPath/expr/floats result/XPath/expr/strings: update of the + test suite to check those. + +Wed Apr 10 13:29:49 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: patch from Richard Jinks for .x float parsing. + +Tue Apr 9 18:09:31 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: patch from Markus Henke when an encoding ain't recognized + +Tue Apr 9 15:47:14 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.m4: got a report that #include <string.h> was needed + +Tue Apr 9 11:51:25 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: applied a fix from Anthony Jones for -o /--output + +Tue Apr 2 20:27:11 MST 2002 John Fleck <jfleck@inkstain.net> + + * doc/example.html: fixing typo + +Mon Apr 1 10:02:57 CEST 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed a bug in the nodeset to boolean comparison code + pointed out by Melvyn Sopacua. + +Fri Mar 29 23:41:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.m4: Frédéric Crozat gave a patch related to the change + of Include paths breaking the libxml.m4 + +Fri Mar 29 18:25:54 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: Fix bug #76927 forgot to save some context + when evaluating binary expressions + +Thu Mar 28 19:22:48 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: fixed configure for MPE/iX from Markus Henke + * xmlmemory.c: fixed initialization problems + * xpath.c: another set of patches from Richard Jinks this + fixes "make XPathtests" on linux + +Wed Mar 27 17:09:43 CET 2002 Daniel Veillard <daniel@veillard.com> + + * trionan.c trionan.h xpath.c: more patches from Richard Jinks + * test/XPath/expr/compare test/XPath/expr/equality + test/XPath/expr/floats test/XPath/expr/functions + test/XPath/expr/strings result/XPath/expr/compare + result/XPath/expr/equality result/XPath/expr/floats + result/XPath/expr/functions result/XPath/expr/strings: Updated + tests though they show a divergence on Linux + +Wed Mar 27 10:06:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c trionan.c: previous commit also included patches + from Richard Jinks on some IEEE support corner case + +Wed Mar 27 10:03:11 CET 2002 Daniel Veillard <daniel@veillard.com> + + * AUTHORS HACKING: Added Igor Zlatkovic as official maintainer + * python/Makefile.am python/tests/Makefile.am: Albert Chin pointed + that $(datadir) should be used for docs + +Tue Mar 26 13:43:16 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: Thomas Steinborn pointed out #76404 that libxml2 + could leak filedescriptors + +Tue Mar 26 08:55:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in nanohttp.c: applied patch from Allan Clark for + UnixWare/OpenServer + +Mon Mar 25 17:45:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.19 + * doc/*: rebuilt the docs + +Mon Mar 25 17:34:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * nanohttp.c: fixing #76043, got fed up with non-portability + of that piece of code. + +Mon Mar 25 13:08:21 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c SAX.c: Never commit without running "make tests" :-( + fix a couple of stupidities in the previous commit + * result/*: a few changes in some attribute order result of previous + commit. + +Mon Mar 25 11:46:05 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c SAX.c: fixed bug #76168, attribute redeclared in + the internal subset should not raise duplicate ID errors, + also there was a small bug in conjunction to namespace + declarations defaulted and xml:xxx attributes DTD definitions. + +Fri Mar 22 15:13:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: Richard Jinks also raised some rounding problems + this tries to fix them + +Fri Mar 22 13:22:09 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: Richard Jinks spotted an incoherent memory allocation + behaviour in xmlXPathCastToString() + +Thu Mar 21 14:25:29 CET 2002 Daniel Veillard <daniel@veillard.com> + + * encoding.c: fixed a bug in the ISO-Latin 1 to UTF8 encoder + raised by Morus Walter + +Thu Mar 21 14:07:13 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c include/libxml/xmlversion.h.in: applied 2 fixups + from Igor + +Thu Mar 21 13:30:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixing #75619, related to a problem when trying + to evaluate condition when the current node set resulting + from that sub-step evaluation is empty. Also fixes 2 potential + problem with previous-sibling and next-siblings axis. + +Thu Mar 21 09:03:59 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: patch from Mark Vakoc to build C14N if DocBook and + HTML support is not configured in. + +Wed Mar 20 22:42:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c error.c parser.c parserInternals.c tree.c xmlIO.c + include/libxml/tree.h: dohh I really didn't intended to commit + this test version :-( + +Wed Mar 20 20:20:57 CET 2002 Daniel Veillard <daniel@veillard.com> + + * testSAX.c: I wanted to see the real speed at the SAX interface + after a little too many Ximianer started complaining about the + parser speed. + added a --quiet option: + paphio:~/XML -> ls -l db100000.xml + -rw-rw-r-- 1 veillard www 20182040 Mar 20 10:30 db100000.xml + paphio:~/XML -> time ./testSAX --quiet db100000.xml + 3200006 callbacks generated + real 0m1.270s + Which means 16MBytes/s and 3Mcallback/s + +Tue Mar 19 19:33:57 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: valgrind spotted another error that time when running + on libxslt regression tests + +Tue Mar 19 15:24:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: adding "make valgrind" running the full regression + tests (except python ones) under Valgrind (using valgrind -q + which was kindly added by the author). + * valid.c: stupid bug pinpointed by Valgrind, the regression tests + passes cleanly now except an obcure floating point initialization + raised in log10() in one XPath regression test ??? + * tree.c: edited some comments to close #75244 + +Tue Mar 19 12:15:20 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: pretty insane thing, the xmlXPathFormatNumber() + was not serializing 1 as "1" if LC_ALL=sv_SE :-( and in the + context of ScrollKeeper, made sure that if the number is + an integer, the serialization follows the description at + http://www.w3.org/TR/xpath#section-String-Functions + +Mon Mar 18 19:18:13 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.18 + * doc/*: updated and rebuilt the web site + * *.c libxml.h: implement the new IN_LIBXML scheme discussed with + the Windows and Cygwin maintainers. + * parser.c: humm, changed the way the SAX parser work when + xmlSubstituteEntitiesDefault(1) is set, it will then + do the entity registration and loading by itself in case the + user provided SAX getEntity() returns NULL. + * testSAX.c: added --noent to test the behaviour. + +Mon Mar 18 12:44:23 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Wilfried Teiken provided a hackish but working + way to get context reported back on entities when parsing + with SAX and without breaking the DOM build. + +Sun Mar 17 11:31:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: applied a new patch from Aleksey Sanin + * doc/site.xsl doc/xml.html doc/*.html: updated the documentation + to reference Aleksey implementation of XML digital Signatures + +Sat Mar 16 23:01:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: small fix to avoid potential problem due to + ordering of freeing data + * python/Makefile.am: people were complaining about + the generated file in python dir not being built + +Fri Mar 15 23:21:40 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in python/Makefile.am python/tests/Makefile.am + python/generator.py python/libxml.c python/types.c: Cleanup + of the python Makefiles based on Jacob and James feedback, + fixed the spec file accordingly, fixed the number of warning + that passing my pedantic CFLAGS was generating. Conclusion + is that Python includes are real crap. + +Fri Mar 15 19:41:25 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure,in: it was reported quite a few times that + xml2-config --cflags should not output + -I$includeprefix/libxml2/libxml because libxml2 header names + clashes with existing names like list.h from C++ stl. + Includes should be #include<libxml/xxx.h> so ... + +Fri Mar 15 10:41:50 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: another patch from Aleksey Sanin + +Fri Mar 15 08:55:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: applied patch from Aleksey Sanin fixing a problem in the + canonicalization algorithm + * doc/xml.html doc/index.html: added the C14N references on the + index page. + +2002-03-13 jacob berkman <jacob@ximian.com> + + * python/Makefile.am: remove LDADD and CFLAGS as this is broken + usage, redundant, and gcc specific + +Wed Mar 13 11:00:59 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: speedup some node selection operations, this can + have a significant impact on DocBook Norm's stylesheets + * nanohttp.c: someone reported that SOCKLEN_T may not be defined + make sure it's always the case + * debugXML.c: distinguish CDATA and comments in ls operations + +Tue Mar 12 19:45:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/*.h: Heiko W. Rupp fixed a lot of comments + to generate better API descriptions etc... + +Mon Mar 11 10:10:30 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: Fixing #74186, made sure all boolean expressions + get fully parenthesized, ran indent on the output + * configure.in HTMLtree.c SAX.c c14n.c debugXML.c tree.c xpointer.c + include/libxml/tree.h: also #74186 related, removed the + --with-buffers option, and all the preprocessor conditional + sections that were resulting from it. + +Sun Mar 10 17:47:58 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: applied patch from Dodji Seketeli fixing an + uninitailized variable in xmlValidGetValidElements() + +Sat Mar 9 15:10:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * c14n.c: fixed a few comments + * doc/*.html doc/*/*.html: regenerated the docs and added + the C14N API + * doc/api.xsl doc/gnome-xml.sgml: fixups and added IDs + +Sat Mar 9 11:16:11 CET 2002 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: fix to adapt varaiations in the + bindings + * configure.in python/setup.py python/setup.py.in: fixed to + have the version of the python scripts automatically updated + +Fri Mar 8 16:45:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed a bug newly introduced and pointed by Uwe Fechner + in xmlCopyProp() + +Fri Mar 8 15:49:10 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.17 release + * doc/*: updated and rebuilt the docs + * xpath.c: fixed a comment + * python/libxml.c: fixed a possible reentrancy problem + +Thu Mar 7 23:19:28 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c python/tests/Makefile.am python/tests/attribs.py: + fixed xmlHasNsProp() bugs for defaulted from DTD attribs, + added a specific regression test + * python/generator.py: xmlHasNsProp() and xmlHasProp() shall + not raise exceptions when failing to find the attribute. + +Thu Mar 7 16:11:35 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in xmllint.c: owen pointed out a problem with the + ftme fix, gettimeofday() was not detected by configure and + the ftime header wasn't included, dohhh + +Thu Mar 7 12:19:36 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in xmllint.c: trying to fix #71457 for timing + precision when gettimeofday() is not availble but ftime() is + +Thu Mar 7 11:24:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in doc/Makefile.am: Fixed #73408 missing images + are now copied on install and part of the -devel RPM + +Thu Mar 7 09:34:16 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: trying to avoid bug #72150 which was apparently + caused by a gcc bug (or a processor problem) as detailed + at http://veillard.com/gcc.bug + +Thu Mar 7 01:02:37 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c python/tests/Makefile.am python/tests/cutnpaste.py: + fixed xmlReconciliateNs(), added a Python test/example for + inter-document cut'n paste + * python/libxml.py: fixed node.doc on document nodes and added + xpathEval() onto node objects + +Wed Mar 6 22:38:03 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c: fixed some htmlSetMetaEncoding() problems + * python/libxml.c python/tests/Makefile.am python/tests/serialize.py: + fixup and integrated tests for the serialization stuff + +Wed Mar 6 19:40:57 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am libxml.3 libxml.4 libxml.spec.in: Fixed bug #72570 + moved the libxml man page to section 3 + +Wed Mar 6 18:34:07 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: fix bug #72490 + * python/libxml.c python/libxml.py: added methods serialize() + and saveTo() to all node elements. + +Tue Mar 5 21:27:03 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: closed #73430, don't read from an input source + which indicated an end-of-file or an error. + +Tue Mar 5 16:33:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: make sure SAX endDocument is always called as + this could result in a Python memory leak otherwise (it's + used to decrement ref-counting) + * python/generator.py python/libxml.c python/libxml.py + python/libxml2-python-api.xml python/libxml2class.txt + python/tests/error.py python/tests/xpath.py: implemented + the suggestions made by Gary Benson and extended the tests + to match it. + +Tue Mar 5 10:35:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py: applied patch fixing #73450 + +Mon Mar 4 17:59:29 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixing #61290 "namespace nodes have no parent" + long standing divergence from the XPath REC. NodeSets + simply hold a copy of namespace nodes and those node ->next + points to the parent (which may not be the node carrying the + definition). + * include/libxml/xpath.h: flagged but didn't added a possible + speedup + * DOCBparser.c HTMLparser.c: removed some warnings from push + parser due to new state being added. + * tree.c: new fix from Boris Erdmann + * configure.in c14n.c include/libxml/c14n.h testC14N.c: added + the XML Canonalization support from Aleksey Sanin + +Sun Mar 3 15:12:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: patch from Boris Erdmann fixing some namespace odities + with xmlCopyNode() + +Sat Mar 2 10:33:04 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: fix bug #72706 when loading a NULL entity + +Fri Mar 1 17:14:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c: Fixed #72346, about handling of xmlns:foo="", this could + actually change in a future XML Namespace revision. + +Fri Mar 1 17:12:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/types.c python/tests/Makefile.am python/tests/xpathret.py: + added the possibility of returning nodesets from XPath extension + functions written in Python + +Fri Mar 1 13:56:12 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/*: commiting some Python bindings work done while travelling + +Fri Mar 1 10:11:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: close #72663 and #72658, don't memdump unless compiled + explicitely with memory debugging switched on + +Sat Feb 23 11:08:09 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt python/libxml_wrap.h python/types.c: + Added wrapper for the xmlURIPtr type, provided accessors, fixed + the accessor generator for strings + * python/tests/Makefile.am python/tests/tstURI.py: added a specific + regression test. + +Fri Feb 22 23:44:57 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/README python/generator.py python/libxml.c python/setup.py: + added the 'usual' setup.py to allow building a libxml2-python + module based on the same code. The initialization is however + different the 2 .so files fo libxml2 and libxslt are identical and + they entry point initialize both libraries. this is done to avoid + some possible nasty problem since the Python don't merge the maps + of all shared modules. + +Wed Feb 20 23:16:08 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed a push/encoding bug reported by Michael + on librsvg + +Wed Feb 20 19:54:05 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parserInternals.h: fixes a misplaced #endif + +Wed Feb 20 17:47:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c valid.c: found and fixed a couple of allocation bugs + +Wed Feb 20 15:36:03 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/xml.html doc/python.html doc/*: added a Python and binding + page describing the current state of the Python bindings and + giving pointers to the other languages wrappers. + +Wed Feb 20 11:16:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing 2.4.16 + * doc/* python/libxml2class.txt: updated and rebuilt the docs, + rebuilt the API and web site + * xpath.c: fixed #71978 portability bugs + +Tue Feb 19 22:49:36 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c: oops broke automatic defaulting of namespaces attributes. + +Tue Feb 19 22:01:35 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parserInternals.h parser.c: had to change + 2 internal parsing API when processing document content + to check the start and end of element content are defined + in the same entity + * valid.c include/libxml/valid.h: attribute normalization can + generate a validity error added xmlValidCtxtNormalizeAttributeValue() + with the context to report it. + * SAX.c: fixed the last known bugs, crazy validation constraints + when a document is standalone seems correctly handled. There + is a couple of open issues left which need consideration especially + PE93 on external unparsed entities and standalone status. + Ran 1819 tests: 1817 suceeded, 2 failed and 0 generated an error in 8.26 s. + The 2 tests left failing are actually in error. Cleanup done. + +Tue Feb 19 15:17:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: implemented E59 spaces in CDATA does not match the + nonterminal S + +Tue Feb 19 14:44:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c parser.c valid.c: more validation test fixups + * check-xml-test-suite.py: added duration info for the tests + +Mon Feb 18 23:25:08 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c valid.c: a couple of errors were reported but not + saved back as such in the parsing context. Down to 1% failure rate + Ran 1819 tests: 1801 suceeded, 18 failed and 0 generated an error + +Mon Feb 18 20:16:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlInternald.c: isExtender was missing a char + * parser.c include/libxml/parser.h: % are acceptable in the + internal subset if within a PUBLIC ID + +Mon Feb 18 19:27:32 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c parserInternals.c valid.c: more work on the conformance + suite. Took the step to finally block documents with encoding + errors. It's a fatal error per the spec, people should have fixed + their documents by now. + +Mon Feb 18 15:30:14 CET 2002 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: fixed the test script after some discussion + on the semantic of TYPE="error" + * Makefile.am: added the script to the distrib + +Mon Feb 18 12:17:41 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c entities.c: fixed a couple of conformances issues deep + into the validation code (standalone and undeclared Notations) + +Mon Feb 18 00:17:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed #71741 supid typo an a bug about encoding parsing + stayed there for years ! + +Mon Feb 18 00:06:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c SAX.c: fixed #71740 NotationDecl with a required field + missing + +Sun Feb 17 23:45:40 CET 2002 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: improved the behaviour a bit as + well as the logs + * parser.c valid.c SAX.c: fixed a few more bugs + "Ran 1819 tests: 1778 suceeded, 41 failed, and 0 generated an error" + +Sun Feb 17 20:41:37 CET 2002 Daniel Veillard <daniel@veillard.com> + + * check-xml-test-suite.py: python script to run regression tests + against the XML Test suite of W3C/OASis + * SAX.c: fixed a validation bug + * parser.c: fixed 3 errors pointed by the test suite + * doc/buildDocBookCatalog: fixed a typo pointed by drake + * python/Makefile.am: fixed a dependendy + +Fri Feb 15 21:47:13 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: avoid a warning bug #71594 + +Wed Feb 13 22:13:33 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: Jesse Perry provided a patch to remove a few + warning on alpha/Tru64 + +Wed Feb 13 14:30:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/entities.h: fixing a comment + * valid.c: fixing some troubles with validity check on namespaces + * result/VC/NS3 test/VC/NS3: added a specific regression test + +Wed Feb 13 14:05:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: Fixing #71342 serializing '\n' in attribute values + * result/noent/att3 result/att3 test/att3: added a specific + test. + +Tue Feb 12 14:45:32 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c: couple of bug fixes + +Mon Feb 11 19:41:29 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/*.py: removed tabs and used spaces. + +Mon Feb 11 19:25:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing 2.4.15 + * doc/news.html doc/xml.html doc/xmlio.html: rebuilt some docs + +Mon Feb 11 14:53:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/xmlcatalog_man.xml: trying to close Red Hat bug #58707 + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=58707 + +Mon Feb 11 09:53:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/encoding.h include/libxml/entities.h + include/libxml/globals.h include/libxml/parser.h + include/libxml/threads.h include/libxml/tree.h + include/libxml/xmlmemory.h: trying to fix the include mess + +Mon Feb 11 08:53:33 CET 2002 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlmemory.h: reverted part of the previous + attempt to provide #69655, this was breaking the build. + +Sun Feb 10 14:13:34 CET 2002 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c Makefile.am build_glob.py configure.in debugXML.c + globals.c parser.c threads.c tree.c valid.c xmlmemory.c + xpath.c xpointer.c include/libxml/globals.h include/libxml/parser.h + include/libxml/parserInternals.h include/libxml/tree.h + include/libxml/xmlmemory.h include/libxml/xpathInternals.h: + Tentatively fixed #69655 , make compiling with -Wredundant-decls + clean. + * python/libxml.c: fixed a warning. + +Sun Feb 10 12:02:59 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c valid.c xinclude.c: fix #68882, cleanup the XInclude + copying of node, merge back IDs in the target document. + * result/XInclude/docids.xml test/XInclude/docs/docids.xml + test/XInclude/ents/ids.xml: test case + * result/VC/ElementValid4: output changed due to a typo fix + +Sat Feb 9 23:15:04 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: seems some version of automake didn't + generate the dependencies right as Jacob found out. Add + an extra dependency rule. + +Sat Feb 9 18:59:23 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c valid.c: Justin Fletcher found some parts + of the code needing cleanup + * libxml.spec.in python/Makefile.am python/generator.py + python/libxml.c python/libxml.py: Fixed the python Makefiles + corrected a bug showing up on ia64, changed the name of the + python internal module too + +Fri Feb 8 15:19:28 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: applied patch from Andris Pavenis for binary + name suffixes + +Fri Feb 8 14:43:17 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmllint.c win32/win32config.h: fixing #68748 + +Fri Feb 8 14:37:05 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixing #70166 + +Fri Feb 8 14:31:24 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixing #70077 + +Fri Feb 8 14:24:02 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Copyright Makefile.am README configure.in libxml.spec.in: + Changed to the MIT Licence + * doc/FAQ.html doc/catalog.html doc/intro.html doc/xml.html + doc/xmlio.html: updated the doc accordingly + * include/libxml/xmlwin32version.h configure.in: preparing + 2.4.14 release + * python/generator.py python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt python/libxml_wrap.h python/types.c: + fixed the const xmlChar * wrapper and generator, XPath extension + functions now use the context as first argument + * python/tests/tstxpath.py python/tests/xpath.py + python/tests/xpathext.py: Updated the tests accordingly + * tree.c: fixed bug #70067 + +Thu Feb 7 17:33:58 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: cleanup + * debugXML.c: always use stdout if output is NULL + * xmlIO.c: don't close filedescriptors passed to outputBuffers + * python/Makefile.am python/generator.py python/libxml2class.txt + python/libxml_wrap.h python/types.c: augmented the number of bindings + handling FILE * and XPath contexts + * python/tests/Makefile.am: avoid a stupid problem due to the + use of TEST. + +Wed Feb 6 23:37:07 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in: fixed stupid bug #70738 found by alfons hoogervorst + +Wed Feb 6 17:04:51 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/TODO python/libxml.c: cleanup the extension function lookup + * xmlmemory.c include/libxml/xmlmemory.h: always compile the list + +Tue Feb 5 17:33:30 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in python/Makefile.am: do not install outside + of prefix + +Mon Feb 4 15:05:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/TODO python/libxml.c: started adding SAX interfaces + * python/tests/Makefile.am python/tests/pushSAX.py: added a basic + SAX test + +Mon Feb 4 01:12:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: hardened the addChild function + * python/generator.py python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt python/libxml_wrap.h python/TODO: + added accessors needed for xmlNode, a bit more testing and + extension of interfaces + * python/tests/Makefile.am python/tests/build.py: added a test + build from scratch/save/load/check + +Sun Feb 3 21:10:39 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: change a small bit in the way valididy + error messages get initialized + * python/TODO python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt python/libxml_wrap.h python/types.c: + added some memory debugging to track leaks at the libxml2 level + * python/tests/*.py: changed all tests to check for leaks, + there is just one left in XPath extension registrations. + +Sun Feb 3 17:50:46 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/TODO python/generator.py python/libxml2-python-api.xml + python/libxml2class.txt: more accessor classes for the parser + context, allow to switch on and check validity + * python/tests/Makefile.am python/tests/error.py + python/tests/invalid.xml python/tests/valid.xml + python/tests/validate.py: attded more test and and added error.py + which I forgot to commit in the last step + +Sun Feb 3 16:03:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/types.c: cleanup + * python/libxml.c python/libxml.py python/libxml_wrap.h + python/generator.py python/libxml2-python-api.xml + python/libxml2class.txt: added class for parser context, added + first cut for push mode support. Added a framework to generate + accessors functions. + * python/tests/Makefile.am python/tests/push.py: added a push + test + +Sun Feb 3 00:17:26 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/TODO python/libxml.py: fixed a small + bug a bit of cleanup. + +Sat Feb 2 22:47:10 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt: adding error redirections and preformat + to a python handler + * python/tests/Makefile.am python/tests/*.py: cleanup made all + tests self checking + +Sat Feb 2 13:18:54 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/libxml.c python/libxml.py: fixed a stupid bug when renaming + a function + +Sat Feb 2 11:25:51 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in python/Makefile.am python/TODO python/generator.py + python/libxml.c python/libxml2-python-api.xml + python/libxml2class.txt: Progressing through the TODOs, class + description output, extra XML API, RPM now builds the wrappers + for all python installed versions + +Sat Feb 2 10:13:52 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in libxml.spec.in python/Makefile.am python/TODO + python/generator.py python/libxml2class.txt: added more informations + in the libxml2-python package including docs. Slightly changed + the class hierarchy + * python/tests/*: added basic regression tests infrastructure too + +Fri Feb 1 23:11:58 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in libxml.spec.in example/Makefile.am python/Makefile.am: + added libxml2-python as part of the packages installed + +Fri Feb 1 18:48:19 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/generator.py python/libxml.c + python/libxml.py: more work, now able to extend the + XPath interpreter with functions written in python. + +Fri Feb 1 10:28:51 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am: Jacob sent a patch to allow building from + tarfile. + +Fri Feb 1 00:40:48 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/Makefile.am python/libxml.c configure.in Makefile.am: + inserted the python wrappers build, I hope this won't be too + unportable + +Thu Jan 31 21:27:37 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c: minor optimization + * python/generator.py python/libxml.c python/libxml.py + python/libxml_wrap.h: more work on the python bindings, + they now support XPath and there is no evident leak + +Thu Jan 31 00:48:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml.py: + more work on the python bindings generator. + +Wed Jan 30 21:51:26 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml_wrap.h: + more work on the python bindings. + +Wed Jan 30 17:35:33 CET 2002 Daniel Veillard <daniel@veillard.com> + + * python/generator.py python/libxml.c python/libxml.py + python/libxml_wrap.h: commited early version of a python binding + for private use only ATM + +Sat Jan 26 22:41:13 CET 2002 Daniel Veillard <daniel@veillard.com> + + * entities.c tree.c include/libxml/entities.h: applied patch + from Anthony Jones to implement copy of DTD subtree too. Had + just to keep 2 function private which really ought to become + public ones. + +Fri Jan 25 15:14:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: added pointers to the web pages in the usage() + +Thu Jan 24 17:04:04 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: more fixes from Petr Kozelka for attribute handling + in the tree API to align the semantic with DOM. + +Thu Jan 24 16:00:53 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c tree.c entities.c: another set of patches from + Anthony Jones for copy operations cleanup and robustness + +Wed Jan 23 18:53:55 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/APIchunk*.html doc/parsedecl.py doc/api.xsl: generated + an alphabetic index based on comments content + * doc/*: rebuilt the web site with the new references + +Wed Jan 23 15:14:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parserInternals.h: Greg Sjaardema suggested to use an + eponential buffer groth policy in xmlParserAddNodeInfo() + +Wed Jan 23 13:32:40 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/api.xsl doc/APIconstructors.html doc/APIfiles.html + doc/APIfunctions.html doc/APIsymbols.html doc/libxml2-refs.xml + doc/parsedecl.py doc/Makefile.am: updated the python extractor + to generate cross-references, and added/updated the stylesheets + to generate and link API indexes. The generic keyword index + is not done yet. + * doc/*.html: regenerated all the usual docs too + +Tue Jan 22 23:11:26 CET 2002 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: added an xpath function to the shell for T. V. Raman + +Tue Jan 22 22:42:23 CET 2002 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: patch from Anthony Jones to catch NULL nodes in + debug routines. + +Tue Jan 22 22:38:42 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: apply an patch from Petr Kozelka for unlink and replace + support of attribute nodes + +Tue Jan 22 19:12:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/libxml2-api.xml doc/parsedecl.py: Build a new version + hopefully near complete and fully documented of the API in XML + * HTMLtree.c SAX.c debugXML.c error.c globals.c parser.c tree.c + xmlIO.c xmlmemory.c include/libxml/catalog.h include/libxml/hash.h + include/libxml/list.h include/libxml/parser.h include/libxml/tree.h + include/libxml/parserInternals.h include/libxml/valid.hi + include/libxml/xmlIO.h include/libxml/xmlerror.hi + include/libxml/xmlmemory.h include/libxml/xmlversion.h.ini + include/libxml/xpath.h include/libxml/xpathInternals.h: + Cleaned up the doc comments a lot in the process, the interface + coverage is now 100% + +Tue Jan 22 00:12:58 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/libxml2-api.xml doc/parsedecl.py: improved the script to + extracts comments from the gtk-doc DocBook output (a bit + convoluted but seems to work). + +Mon Jan 21 18:29:19 CET 2002 Daniel Veillard <daniel@veillard.com> + + * Makefile.am doc/Makefile.am doc/libxml2-api.xml doc/parsedecl.py: + added an XML description of the API, moved the script generating + it here. Added a "make api" target + +Mon Jan 21 14:34:37 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: Adam Lounds pointed out a bug in xmlSearchNs() + +Mon Jan 21 09:55:21 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xpath.c include/libxml/xpathInternals.h: the change made to + xmlXPathFuncLookupFunc was incompatible roll it back + +Sun Jan 20 23:03:41 CET 2002 Daniel Veillard <daniel@veillard.com> + + * SAX.c: cleanup patch from Anthony Jones + * doc/Makefile.am: fix the headers to avoid in make scan + * parserInternals.c xpath.c include/libxml/*.h: cleanup of the + includes, * vs Ptr and general cleanup + * parsedecl.py: first version of a script to extract the + module interfaces, the goal will be to provide .decl or XML + specification of the interfaces to build wrappers. + +Sun Jan 20 13:38:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/xmlcatalog_man.xml xmlcatalog.c: Fixed bug #68830, xmlcatalog + now provides return codes in case of errors + +Sat Jan 19 16:36:21 CET 2002 Bjorn Reese <breese@users.sourceforge.net> + + * trio.h trio.c triodef.h triop.h trionan.h trionan.c Makefile.am: + Upgraded to trio baseline 1.6 + * strio.h strio.c: Replaced by triostr.h and triostr.c + +Fri Jan 18 17:22:50 CET 2002 Daniel Veillard <daniel@veillard.com> + + * globals.c xmlIO.c xmlcatalog.c: removed the last occurences + of strdup usage in the code + +Fri Jan 18 12:47:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c error.c: Keith Isdale complained rightly that + xmlInitParser() did not preserve value set by xmlSetGenericErrorFunc + +Thu Jan 17 09:44:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed the funxtion to set the xml: attributes + * debugXML.c: added "setbase" to test it. + +Wed Jan 16 16:36:08 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: update xmlNodeSetContent() and xmlNodeSetContentLen() + to allow updating an attribute content + +Tue Jan 15 18:09:23 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.h: try to avoid problems when compiling on Windows + +Mon Jan 14 18:56:25 CET 2002 Daniel Veillard <daniel@veillard.com> + + * hash.c: patch from Anthony Jones for hash.c allocation size + * Makefile.am: trying to work around Yet Another Libtool Madness + and build the 2.4.13 release finally ... + +Mon Jan 14 18:27:19 CET 2002 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: updated to 2.4.13 + * doc/* : update of the documentation + +Mon Jan 14 17:53:41 CET 2002 Daniel Veillard <daniel@veillard.com> + + * debugXML.c tree.c: some cleanup after an unsuccessful attempt + at fixing #61290 :-( + +Sun Jan 13 21:30:54 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed xmlSaveFormatFileEnc() when encoding == NULL + Fixes bug #67229 + +Sun Jan 13 17:14:06 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: trying to avoid troubles when a subtree is copied + and coalesced in part with the target tree. Should fix + bug #67407 + +Sun Jan 13 16:37:15 CET 2002 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed validation of attributes content of type + NAME NAMES NMTOKEN and NMTOKENS to accept internationalized + values, very old bug. Fixes #67671 + +Sun Jan 13 15:07:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c include/libxml/parserInternals.h tree.c: integrated + a couple of fixes and a new API function xmlSetEntityReferenceFunc() + from Keith Isdale and dedicated to xsldbg the XSLT debugger. + +Sun Jan 13 14:23:21 CET 2002 Daniel Veillard <daniel@veillard.com> + + * threads.c: applied Serguei Narojnyi's patch to add native + thread support on the Win32 platform + * testThreadsWin32.c Makefile.am: added the test program also + from Serguei, Win32 specific + * include/win32config.h include/libxml/xmlwin32version.h.in: + added patch from Igor for the Windows thread specific defines. + +Wed Jan 9 12:50:39 CET 2002 Daniel Veillard <daniel@veillard.com> + + * entities.c: Anthony Jones pointed a bug in xmlCopyEntity() + +Tue Jan 8 14:23:22 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/*.html doc/site.xsl doc/Makefile: renamed XML.html + output page into XMLinfo.html. Close bug #66951 and + raised by Robert Collins too. + +Tue Jan 8 14:13:18 CET 2002 Daniel Veillard <daniel@veillard.com> + + * encoding.c: Paul Keogh pointed out a possibility of segfault + on repeted xmlAddEncodingAlias() / xmlCleanupEncodingAlias(). + Closes bug # 68238 + +Tue Jan 8 12:48:27 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/*.html: updated the Gdome2 links + +Tue Jan 8 11:32:30 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxml.h: Applied following patches from Robert Collins + and make sure IN_LIBXML is defined when compiling it + ------- + * include/libxml/xmlversion.h.in (LIBXML_DLL_IMPORT): Use on Cygwin + as well as Visual C. + * parser.c (XML_DIR_SEP): Don't use '\\' for Cygwin. + * parserInternals.c (XML_DIR_SEP): Don't use '\\' for Cygwin. + * strio.c (PLATFORM_UNIX): Define for Cygwin. + * triodef.h (TRIO_PLATFORM_UNIX): Define for Cygwin. + * xmlIO.c (xmlFileOpen): Use unix behaviour for Cygwin. + Use binary mode opens for Cygwin (xmlFileOpenW xmlParserGetDirectory + xmlSysIDExists xmlNoNetExists). + * xmllint.c: Don't include winsock2.h for Cygwin. + +Mon Jan 7 17:52:48 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: Jirka Kosek pointer out a bug in xmlParseTextDecl() + when the version info is not present. + +Mon Jan 7 00:03:58 CET 2002 Daniel Veillard <daniel@veillard.com> + + * tree.c: Anthony Jones pointed out a problem in + xmlStringGetNodeList() and provided a fix for it + +Sun Jan 6 13:45:49 CET 2002 Daniel Veillard <daniel@veillard.com> + + * parser.c: patch from Frank J Franklin to remove a bug in + xmlCreatePushParserCtxt() when the initial buffer passed + is large. + +Sat Jan 5 19:24:23 CET 2002 Daniel Veillard <daniel@veillard.com> + + * win32/*: big cleanup of the Windows/MSVC project files + from Igor Zlatkovic + +Wed Jan 2 14:11:35 CET 2002 Daniel Veillard <daniel@veillard.com> + + * doc/Makefile.am: should fix #67674 and avoid troubles if + xsltproc is not available or fails in the prefix provided + +Tue Jan 1 17:48:56 CET 2002 Daniel Veillard <daniel@veillard.com> + + * xmlmemory.c: one more doc patch from Charlie Bozeman. + +Mon Dec 31 17:35:40 CET 2001 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c parser.c valid.c include/libxml/parserInternals.h + include/libxml/xmlerror.h include/libxml/xpathInternals.h: + Fixed a few other problems raised by Charlie Bozeman. + * result/VC/ElementValid[5-7]: fixed the output + +Mon Dec 31 17:13:34 CET 2001 Daniel Veillard <daniel@veillard.com> + + * *.c include/libxml/*.h doc/html/*: applied 42 documentation + patches from Charlie Bozeman. Regenerated the HTML docs. + +Thu Dec 20 14:59:52 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/debugXML.h win32/dsp/libxml2.def.src: fixes + for Windows from Igor + +Tue Dec 18 12:13:33 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: applied Justin Fletcher patch for --output or -o + +Tue Dec 18 08:52:32 CET 2001 Daniel Veillard <daniel@veillard.com> + + * win32/libxml2/libxml2.def.src: close #67019 + +Tue Dec 18 08:08:51 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: applied Justin Fletcher generic timing patch + similar to the one already applied to xsltproc. + +Mon Dec 17 16:29:08 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h tree.c: applied documentation patches + from Charlie Bozeman + +Thu Dec 13 21:24:16 MST 2001 John Fleck <jfleck@inkstain.net> + + *doc/xmllint.xml, xmllint.1 - document --dropdtd + +Thu Dec 13 23:19:50 CET 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c: fix the xmlStrdup() used in the previous patch. + * valid.c: added --dropdtd + * tree.c: fixed xmlUnlinkNode so it also removes the references + from the document if the node is a DTD + +Thu Dec 13 15:54:35 CET 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c valid.c: cleanup some static declarations + +Thu Dec 13 15:23:04 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: removed another strdup() + * doc/FAQ: removed the HP/UX entry + +Thu Dec 13 09:44:58 CET 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c: fix bug #66816 when validating. + * xmllint.c: don't use sys/time.h if configure did not found it + +Mon Dec 10 21:39:55 MST 2001 John Fleck <jfleck@inkstain.net> + + * docs/xmllint.1, xmllint.xml, xmlcatalog.1, xmlcatalog_man.html, + xmlcatalog_man.xml + +Mon Dec 10 22:06:16 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlmemory.h: Hietaniemi Jarkko pointed out that + xmlInitMemory() was declared twice + +Sun Dec 9 14:59:23 CET 2001 Daniel Veillard <daniel@veillard.com> + + * globals.c: do not reference strdup() ! + * configure.in libxml-2.0.pc.in: trying to fix the libs + of the various config extraction modules + +Fri Dec 7 15:21:33 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in : preparing 2.4.12 + * doc/* : updated and rebuilt the docs + +Fri Dec 7 12:32:00 CET 2001 Daniel Veillard <daniel@veillard.com> + + * uri.c: closed bug #66159 + * testURI.c: added --escape option + * configure.in: some cleanup for xml2-config --cflags + +Thu Dec 6 15:31:30 CET 2001 Daniel Veillard <daniel@veillard.com> + + * globals.c testThreads.c: removed some misplaced includes + of xmlversion.h + +Thu Dec 6 09:06:08 EST 2001 Daniel Veillard <daniel@veillard.com> + + * threads.c: patch from Gary Pennington fixing a possible + problem at initialization time. + +Wed Dec 5 13:01:37 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in libxml.h parser.c testThreads.c macos/: integrated + Eric Lavigne contribution to build libxml2 on MacOS using + CodeWarrior. + +Tue Dec 4 14:13:44 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: applied Geert Kloosterman's patch to fix + --repeat --timing output + +Thu Nov 29 17:10:22 CET 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c: Robin Berjon <robin@knowscape.com> found a case + where non-wellformed XML declaractions were not detected. + +Wed Nov 28 15:41:40 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xpointer.c: fixed a compilation bug pointed by Danny Jamshy + +Wed Nov 28 10:09:51 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: as robert pointed again, xmlInputCallbackInitialized + gets reset by xmlCleanupInputCallbacks() and this makes the + function useless. Same for output. + +Tue Nov 27 17:22:36 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: robert pointed out a loop error in callback cleanups + +Mon Nov 26 16:56:00 CET 2001 Daniel Veillard <daniel@veillard.com> + + * tree.c debugXML.c include/libxml/tree.h include/libxml/debugXML.h: + moved xmlGetLineNo() and xmlGetNodePath() into the main tree module, + they are not really tied to debugging + +Mon Nov 26 11:31:36 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing 2.4.11 + * xmllint.c: better --catalogs description + +Sun Nov 25 11:34:24 CET 2001 Daniel Veillard <daniel@veillard.com> + + * tree.c: fixed a couple of problems in xmlSetProp() + +Thu Nov 22 19:19:10 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c tree.c xmlIO.c xmlmemory.c: some cleanups when chasing + unappropriate stdout output. + +Thu Nov 22 13:58:14 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h: Fixed a couple of macro errors pointed out + by Denis Beurive, closes #65111 + +Tue Nov 20 10:34:01 CET 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c: in case of content model validity error, don't + print it if validity warnings were not requested. + +Tue Nov 20 09:30:02 CET 2001 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: applied a couple of patches from Brian D Ripley. + * parserInternals.c: removed the last exit() call. Print an + unmaskable error on stderr instead (library mismatch detection) + +Sat Nov 17 17:16:51 MST 2001 John Fleck <jfleck@inkstain.net> + + * doc/xmllint.xml, doc/xmllint.1 - update xmllint man page with + shell instructions from Heiko Rupp + +Thu Nov 15 14:53:42 CET 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: use the URL notation file:// for default catalog paths + +Wed Nov 14 16:03:02 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/tree.h: better comments for _private fields + * tree.c: removed a problem when copying an entity reference. + +Tue Nov 13 16:23:04 CET 2001 Daniel Veillard <daniel@veillard.com> + + * vms/*: updated instructions and diffs from John A Fotheringham + +Mon Nov 12 23:43:22 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlerror.h: avoid an include problem if + #include <libxml/xmlerror.h> happens first in code + seems to be the case in KDE libs + +Mon Nov 12 22:32:41 CET 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/* include/libxml/xmlwin32version.h.in: update + from Igor for Windows + +Mon Nov 12 10:19:41 CET 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: Gary Pennington pointed out a missing prefix + +Sat Nov 10 12:55:42 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: preparing 2.4.10 + * doc/*: upgraded and rebuilt the docs + +Sat Nov 10 12:33:38 CET 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fix comment in scripts element parsing. + * result/HTML/doc3*: updated the results. + +Sat Nov 10 11:18:18 CET 2001 Daniel Veillard <daniel@veillard.com> + + * uri.c: another URI bug fix #63336, using Joel Young patch. + +Sat Nov 10 11:07:26 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/debugXML.h: add xmlGetNodePath() + a cleaned up version of the Pwd shell string generation. + +Fri Nov 9 00:34:13 CET 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c include/libxml/tree.h: trying to fix namespaces + + validation problems for good, closing #63619 in the process + * result/valid/dia.xml test/valid/dia.xml: the Dia test was + wrong in this respect, fixed it. + +Thu Nov 8 18:31:40 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: Morus Walter patch to allow --format and --encode + +Thu Nov 8 14:52:18 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: Stefan Kost provided an help command for the shell + +Wed Nov 7 14:32:55 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: Heiko Rupp pointed that the shell would crash + on empty nodesets returns. + +Wed Nov 7 13:52:36 CET 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: Weiqi Gao pointed out that xmlcatalog + migh need the history libraries + +Tue Nov 6 23:49:09 CET 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c test/HTML/lt.html result/HTML/lt.html*: + handle the case of < in quoted attributes, Bastian Kleineidam + +Tue Nov 6 16:21:33 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in include/libxml/xmlwin32version.h: releasing 2.4.9 + fixing catalog breakages + * Makefile.am catalog.c result/catalogs/catal + result/catalogs/mycatalog.* test/catalogs/catal*: + fixed more problems in catalog support, added more regression tests + for both XML and SGML catalog handling + +Mon Nov 5 20:26:41 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c: applied an improvement to xmlGetLineNo() from + Keith Isdale + +Mon Nov 5 15:20:16 CET 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: dohhhh XML catalog add and remove ops were broken too. + Side effect of the progressive catalog loading + +Mon Nov 5 12:40:54 CET 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: confexecdir and confexec_DATA were defined twice + pointed out by Karl Eichwalder + +Sun Nov 4 23:18:34 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmlcatalog.c: avoid unlink() and use remove() instead. + +Sun Nov 4 23:12:38 CET 2001 Daniel Veillard <daniel@veillard.com> + + * libxml.spec.in: cleanup + * include/libxml/xmlwin32version.h: updated with 2.4.8 + +Sun Nov 4 21:17:24 CET 2001 Daniel Veillard <daniel@veillard.com> + + * encoding.c global.data globals.c testThreads.c: fix bug #63752 + of compiling libxml with a non standard set of options + +Sun Nov 4 13:11:41 MST 2001 John Fleck <jfleck@inkstain.net + + * doc/xmllint.xml, xmllint.1 - updating xmllint man page to + document --sgml option, fixing gnome bugzilla #63382 + +Sun Nov 4 20:56:53 CET 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/catalog.h catalog.c: Fixed SGML catalogs + breakage of 2.4.7, added a couple of really needed APIs + like xmlCatalogIsEmpty() and xmlNewCatalog() + * xmlcatalog.c: updated --sgml --noout to be a suitable replacement + for install-catalog + * configure.in: preparing 2.4.8 + +Thu Nov 1 15:29:31 CET 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c tree.c include/libxml/HTMLtree.h + include/libxml/tree.h include/libxml/xmlIO.h: more include + cleanups, export cleanly one html output + format function. + +Thu Nov 1 14:12:12 CET 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c: removed initGenericErrorDefaultFunc call from + xmlInitParser() since it could destroy previous calls to + xsltSetGenericErrorFunc() effects + +Thu Nov 1 09:37:13 CET 2001 Daniel Veillard <daniel@veillard.com> + + * debugXML.c include/libxml/debugXML.h: bool can be a reserved + keyword. + +Wed Oct 31 18:50:08 CET 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: cleanup + * threads.c: cleanup too + * xmlIO.c include/libxml/xmlIO.h: added xmlNoNetExternalEntityLoader() + from xsltproc + * include/libxml/tree.h include/libxml/parser.h: trying to break a + dependency loop. + +Tue Oct 30 18:38:53 CET 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: Justin Fletcher pointed out that xmlParseXMLCatalog + was not used anymore ! + +Tue Oct 30 13:33:13 CET 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.7 + * Makefile.am doc/Makefile.am: switched to the latest xmllint + manual page from John + * doc/*: updated the doc and rebuilt the generated pages + +Tue Oct 30 11:31:19 CET 2001 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: closing bug #62711, the library should never + close stdin or stdout. + +Tue Oct 30 10:46:12 CET 2001 Daniel Veillard <daniel@veillard.com> + + * uri.c: second pass at fixing #63336, using Joel Young + final patch. looks okay. + +Tue Oct 30 00:56:05 CET 2001 Daniel Veillard <daniel@veillard.com> + + * uri.c include/libxml/uri.h: trying to clear #63336 + allowing the escaping routine to parse unconformant + URI-References. + +Mon Oct 29 19:09:46 CET 2001 Daniel Veillard <daniel@veillard.com> + + * vms/readme.vms vms/build_libxml.com nanoftp.c + include/libxml/xmlversion.h.in: a few VMS updates from + John A Fotheringham + * include/libxml/xmlIO.h xmlIO.c: added xmlCleanupInputCallbacks() + and xmlCleanupOutputCallbacks() for the Perl binding people. + +Mon Oct 29 12:44:17 CET 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c globals.c DOCBparser.c HTMLparser.c error.c: + apply fixes to close #63271 and avoid segfaults when + the error routine gets callbed before xmlInitParser() + get called. + * nanoftp.c error.c: Applied patches from Justin Fletcher + correcting some xmlGenericError misuses. + +Sat Oct 27 14:04:45 MDT 2001 John Fleck <jfleck@inkstain.net> + + *doc/xmllint.xml, doc/xmllint.1 + New and improved man page for xmllint - .xml is the original, .1 + is the generated man page + +Wed Oct 24 14:34:25 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * doc/site.xsl doc/*.html doc/Makefile.am: now autogenerate + the web site from the main HTML document. + +Tue Oct 23 14:32:04 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c: fixed an erroneous validation bug when PE refs + occurs in external parsed entities referenced from the + internals subset + * test/valid/index.xml test/valid/dtds/nitf-2-5.dtd + test/valid/dtds/NewsMLv1.0.dtd result/valid/index.xml*: + added the associated testcase, it's a nice one. + * HTMLparser.c: generate the DTD node as HTML still ... + * HTMLtree.c: fixed errors in Set/GetMetaEncoding + +Mon Oct 22 14:20:17 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: fixed a bug in htmlNewDoc() + +Mon Oct 22 11:32:36 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * test/threads/*: added entities testing to the Thread test + * testThreads.c: make the test reasonable + * DOCBparser.c: fix the DTD public and system ID + * xmllint.c: added --sgml for SGML DocBook importing + * Makefile.am: added Docbtests target + +Fri Oct 19 11:47:13 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * nanoftp.c: use only "anonymous@" string for anonymous passwds + * testThreads.c: removed bogus include + +Thu Oct 18 16:56:23 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c valid.c result/valid/rss.xml result/valid/rss.xml.err: + fixed a very serious (looping) validation bug + +Wed Oct 17 11:56:25 EDT 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/globals.h include/libxml/threads.h threads.c + testThreads.c: far more testing, cleaning up bugs + * *.c : make sure globals.h is always included. + +Wed Oct 17 17:41:41 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c: try to get rid of parser loops for good. + +Wed Oct 17 13:29:02 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: fixed some bugs in CFLAGS passing. + * test/threads Makefile.am testThreads.c: added a specific + threaded test case (really nasty, guaranteed). + +Tue Oct 16 23:01:49 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: serious cleanup on the management of the + XML catalog tree, more tests done, especially with + the catalog PI. + +Tue Oct 16 08:43:43 EDT 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: avoid a problem in catalog cleanup on SMP if + catalogs were not initialized. + +Tue Oct 16 14:33:19 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c xpath.c: trying to cleanup the not thread safe + parts of the library. + +Mon Oct 15 14:30:11 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/globals.h configure.in global.data: make + the allocation be per-thread a configure option + * encoding.c include/libxml/parser.h: fixed compilation + errors + +Mon Oct 15 12:45:03 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/parser.h: Norm reported that a few lines + added were breaking libxslt compile, removed them for now + +Sun Oct 14 05:55:01 EDT 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c parserInternals.c threads.c: debugged and fixed + initialization problems which were giving troubles on SMP + boxes. + +Sat Oct 13 16:17:13 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/Makefile.am: missing globals.h + +Sat Oct 13 14:15:00 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * globals.c: added a couple of standard includes. + +Sat Oct 13 11:08:20 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/SAX.h include/libxml/globals.h include/libxml/parser.h + include/libxml/parserInternals.h include/libxml/tree.h + include/libxml/xmlerror.h HTMLparser.c SAX.c error.c globals.c + nanoftp.c nanohttp.c parser.c parserInternals.c testDocbook.c + testHTML.c testSAX.c tree.c uri.c xlink.c xmlmemory.c: + Applied the last patches from Gary, cleanup, activated threading + all user accessible global variables are now handled in globals.[ch] + Still a bit rought but make tests passes with either + --with-threads defined at configure time or not. + * Makefile.am example/Makefile.am: added globals.[ch] and threads + linking options + +Fri Oct 12 19:25:55 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am include/libxml/Makefile.am + include/libxml/globals.h globals.c include/libxml/threads.h + threads.c build_glob.py global.data xmlcatalog.c acconfig.h + configure.in: started integrating the core of the thread support + not activated yet but half integrated. The code should still + compile and work anyway. + +Fri Oct 12 00:53:03 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLtree.c catalog.c debugXML.c entities.c nanoftp.c + parser.c valid.c xmlmemory.c xpath.c xpointer.c: started + integrating the non-controversial parts of Gary Pennington + multithread patches + * catalog.c: corrected a small bug introduced + +Thu Oct 11 20:58:15 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c include/libxml/catalog.h: very serious cleanup, + isolating unportable code and as much as possible the accesses + to the global shared catalog. May need more testing ! + +Thu Oct 11 11:10:31 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/debugXML.h debugXML.c tree.c: integrating + Keith Isdale patches for the XSLT debugger interfaces. Some + cleanup + +Thu Oct 11 08:44:01 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/Makefile.mingw: update from Tobias Peters for 2.4.5 + * DOCBparser.c: generate line nubers in elements + +Wed Oct 10 11:35:45 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing 2.4.6 release + * doc/xml.html doc/html/*: updated and rebuilt the docs + * include/libxml/*.h *.c: fixed a number of teh/the widht/width typos + +Mon Oct 8 20:38:27 MDT 2001 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog_man.xml, xmlcatalog.1, xmlcatalog_man.html + adding documentation for DV's supercatalog support + +Mon Oct 8 17:00:16 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/catalog.h catalog.c xmlcatalog.c: adding SGML + super catalog support adding one API and one flag --sgml to + xmlcatalog + +Sun Oct 7 16:43:57 MDT 2001 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog_man.xml, xmlcatalog.1 + One more crack at + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=54392 + +Sun Oct 7 18:47:02 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * xpath.c: implemented xmlXPathObjectCopy for external objects + * include/libxml/xpathInternals.h: added xmlXPathStackIsExternal + +Sat Oct 6 16:25:52 MDT 2001 John Fleck <jfleck@inkstain.net> + + *doc/xmlcatalog_man.xml, xmlcatalog_man.html, xmlcatalog.1 + finishing up fix to + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=54392, making + the xmlcatalog man page display more elegantly + +Sat Oct 6 15:27:12 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: closing bug #61832 + * HTMLparser.c: removed a warning + +Sat Oct 6 15:07:14 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixing #61673 part I, do not loose doc information + when copying result value trees. + +Sat Oct 6 11:58:58 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: trying to harden the XPath interpreter + +Fri Oct 5 20:37:51 MDT 2001 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog.1 updated using a new stylesheet to address, in + part, https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=54392 + +Fri Oct 5 23:35:00 HKT 2001 William Brack <wbrack@mmm.com.hk> + + * HTMLparser: repaired another loop problem + +Fri Oct 5 11:16:21 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * uri.c: applied fix from Mathias Hasselmann about a bug in URI + parsing. + * xpath.c: fix bug #61291 the default XML namespace node is + missing from the namespace axis. + * tree.c: refuse to create namespaces nodes with prefix "xml" + +Thu Oct 4 16:47:44 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: ouch a non-defined namespace could lead to a crash, + fixed #61215 + +Thu Oct 4 16:24:26 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: closed bug #61054 + +Wed Oct 3 15:19:04 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/Makefile.am: closing #60708 + +Tue Oct 2 15:52:05 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/libxml2.def.src include/libxml/parser.h parser.c: + adding xmlSAXParseFileWithData following Marco Stipek suggestion + +Tue Oct 2 11:27:58 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c: close bug #61550 when xml: wasn't considered a namespace + +Tue Oct 2 11:18:32 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/libxml2.def.src: Igor Zlatkovic patches + * DOCBparser.c HTMLparser.c parser.c: fixed typos + +Mon Oct 1 09:34:51 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: Justin Fletcher provided cleaup code in case + HAVE_STAT is not defined + * include/win32config.h: Igor Zlatkovic suggested to have + HAVE_STAT defined there + +Sat Sep 29 00:15:00 HKT 2001 William Brack <wbrack@mmm.com.hk> + + * catalog.c - fixed typing error reported by M. Barros + +Sun Sep 23 21:02:39 MDT 2001 John Fleck <jfleck@inkstain.net> + + * xmllint.c - fixing typo + +Sat Sep 22 10:00:00 HKT 2001 William Brack <wbrack@mmm.com.hk> + + * HTMLparser.c: small enhancement to prevent loop on + unrecognizable data + +Fri Sep 21 11:45:53 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parserInternals.c: applying patch from bug #60757 this + should close it + +Thu Sep 20 15:54:29 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c xmlcatalog.c: removed a couple of warning + * xpath.c: try to solve the linking problem on platforms + needing trio to compile + +Wed Sep 19 10:01:37 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am libxml.spec.in: backing up non-documented changes + commited without review or aproval by Jens Finke <jens@gnome.org> + * HACKING: made 100% clear that no commit should be done directly + +Mon Sep 17 18:52:37 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: Joe Orton provided a patch fixing a problem + when iconv is specified to be in a non-standard directory + but wasn't exported in xml2-config --cflags + +Fri Sep 14 19:32:43 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: let's ship 2.4.5 before getting too much + troubles with 2.4.4 errors. + +Fri Sep 14 12:26:58 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * encoding.c entities.c: do not output hexadecimal charrefs + when serializing HTML since some version of Netscape can't + grok it, generate decimal ones. + * result/HTML/doc3.htm: output changed due to previous test + * parserInternals.c: repair xmlKeepBlanksDefault() broken in 2.4.4 + +Thu Sep 13 13:34:27 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * libxml-2.0.pc.in: dohh generated the wrong include path :-( + * doc/Makefile.am libxml.spec.in: re-dohh forgot the new manpage :-( + +Wed Sep 12 22:14:55 CEST 2001 Daniel Veillard <daniel@veillard.com> + Released 2.4.4 + + * config.h.in configure.in libxml.spec.in include/libxml/Makefile.am + libxml-2.0.pc.in: moved includes to includedir/libxml2/libxml, + updated the configuration scripts systems accordingly + +Wed Sep 12 20:49:32 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * configure.in: preparing for 2.4.4 + * doc/xml.html doc/html/*: updated and rebuilt the docs + +Wed Sep 12 16:58:16 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/libxml2.def.src: tried to incorporate comments + from bug #59220 + +Tue Sep 11 11:25:36 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c result/noent/wml.xml: fixed bug #59981 related + to handling of '&' in attributes when entities are substitued + +Mon Sep 10 22:14:42 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * libxml.h include/libxml/xmlversion.h.in + include/libxml/xmlwin32version.h include/libxml/xmlwin32version.h.in: + Tried to close bug #60131 + +Mon Sep 10 20:46:03 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixed a bug in the HTML parser introduced Sep 9 + +Mon Sep 10 20:13:09 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: fixing bug #59946 on xmlns="" + +Mon Sep 10 16:39:42 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/xmlerror.h SAX.c: fixing bug 59732, simple + but allocates a new error code. + +Sun Sep 9 10:33:15 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: John Fleck fixed typos in the options output + * parser.c SAX.c: fix ignorable white space SAX selection + +Sat Sep 8 11:43:53 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * entities.c: Steve Underwood found the possibility of an + ininite loop in case of error. + +Fri Sep 7 11:35:00 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am: Need $(ICONV_LIBS) in libxml2_la_LIBADD + +Wed Sep 5 17:47:43 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * parser.c: warn if version is not 1.0 but it's not + strictly speaking an error after analyzing the spec + +Mon Sep 3 10:07:03 MDT 2001 John Fleck <jfleck@inkstain.net> + + *doc/catalog.html - add link to the html version of the + man page, other linguistic cleanups + +Mon Sep 3 09:10:08 MDT 2001 John Fleck <jfleck@inkstain.net> + + * doc/xmlcatalog_man.xml, xmlcatalog_man.html, xmlcatalog.1 + adding documentation for xmlcatalog. Note: xmlcatalog.1, the man + file, has not yet been included in the build. + +Sat Sep 1 18:17:47 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: removed a duplicate affectation Justin Fletcher + +Fri Aug 31 22:02:10 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * tree.c: Armin Sander pointed a possible text coalescing + problem, completed his patch. + +Fri Aug 31 18:30:28 CEST 2001 Bjorn Reese <breese@users.sourceforge.net> + + * trionan.c: Fixed const and volatile re-definition problem + +Fri Aug 31 16:51:28 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * libxml.4 parser.c: doc updates from Heiko Rupp + * parserInternals.c: 2 sanity checks from Heiko Rupp + +Tue Aug 28 22:38:45 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * tree.c: applied patch from Armin Sander to make some pointers + const in xmlCopyNode() + * include/libxml/tree.h: added fix to the header + +Mon Aug 27 16:24:47 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: hum, restrict the integer usage gcc bug workaround + to only gcc compilers so that other architecture don't get + penalized by this limitation. + * include/libxml/xpath.h: small typo fix from Heiko W. Rupp + +Sun Aug 26 20:45:04 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * valid.c: fixed a Windows compiler warning (Chris Poblete) + * xpath.c: fix for mod when dividend is 0 (Chris Poblete) + +Sat Aug 25 15:30:17 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/catalog.h catalog.c xmlcatalog.c: added a + --convert option to xmlcatalog to convert SGML ones to + the XML syntax. + * xmllint.c: small cleanup for $SGML_CATALOG_FILES support. + + 2.4.3 got released at that point +Thu Aug 23 23:16:32 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c xmlIO.c: started some serious testing and fixed + a few bug and optmization needs. + +Thu Aug 23 17:26:58 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am configure.in include/libxml/xmlwin32version.h: + preparing for a 2.4.3 release even if it may not be ready yet + * catalog.c parser.c xmlIO.c include/libxml/catalog.h: redirected + all file parsing lookup to go through the entity resolver, add + to add an API to bypass it (needed to load catalogs themselves), + some cleanup on the catalog code too. + * nanoftp.c: small cleanup + * doc/catalog.html: small update + +Thu Aug 23 12:22:26 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixed bugi #59406 in SGML catalog parsing reported by + Jun Kuriyama + +Thu Aug 23 02:51:29 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * doc/catalog.html: finished the catalog documentation + +Thu Aug 23 01:38:42 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * doc/catalog.html doc/xml.html: added documentation about + Catalog support, misses an API description + * doc/html/*: reextracted the API pages + +Wed Aug 22 18:27:47 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/catalog.h catalog.c xmlIO.c HTMLparser.c: + Added the part about section 7.2 on URI resolution, + fixed a side effect in the HTML parser, look complete + and ready to rock except the URI/SystemID part! + +Wed Aug 22 16:27:03 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/catalog.h include/libxml/parser.h + include/libxml/xmlerror.h catalog.c parser.c parserInternals.c + xmlIO.c: added support and APIs needed for the catalog PI + * include/libxml/xmlIO.h: cleanup + +Wed Aug 22 02:03:31 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c parser.c xmlIO.c xmlcatalog.c xmllint.c + include/libxml/catalog.h: starts to look okay, really + plugged the new framework, cleaned a lot of stuff, + added some APIs, except the PI's support missing this + should be mostly complete + * result/catalogs/* test/catalogs/*: added new test, enriched + the existing one with URN ID tests + +Tue Aug 21 14:56:18 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * catalog.c: fixed nextCatalog + * result/catalogs/docbook test/catalogs/*: started adding + a small regression test + +Tue Aug 21 12:52:38 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am catalog.c xmlcatalog.c include/libxml/catalog.h: + more work on the XML catalog support. + * parser.c include/libxml/parser.h: small cleanup seems using + list as a public parameter name can give portability troubles + * trionan.c trionan.h xpath.c include/libxml/trionan.h + include/libxml/xpath.h include/libxml/Makefile.am: removed + trionan from the libxml API, added xmlXPathIsInf and xmlXPathIsNaN + wrappers + +Tue Aug 21 11:18:45 CEST 2001 Bjorn Reese <breese@users.sourceforge.net> + + * Makefile.am trio.c triodef.h trionan.c xpath.c + include/libxml/Makefile.am include/libxml/trionan.h: + Re-worked Not-A-Number and Infinity support. + * xmlcatalog.c: added readline include files + +Mon Aug 20 02:04:13 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * Makefile.am xmlcatalog.c libxml.spec.in: renaming + testCatalog as xmlcatalog, making it an installed app + adding a shell, and preparing it to be a /etc/xml/catalog + management tool, though not ready yet + * catalog.c include/libxml/catalog.h: adding support for + XML Catalogs http://www.oasis-open.org/committees/entity/ + not finished, there is some interesting tradeoffs and a + few open questions left. + +Sun Aug 19 14:59:56 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: fixed a line formatting problem + +Fri Aug 17 11:35:31 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: removed a couple of unused variable (Albert Chin) + +Fri Aug 17 01:25:21 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * HTMLparser.c HTMLtree.c include/libxml/HTMLparser.h: + trying to fix some troubles w.r.t. function returning + const xxxPtr. + +Thu Aug 16 21:33:20 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/libxml2.def.src: another set of symbols conditionally + defined + +Thu Aug 16 21:31:14 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpointer.c: removed unused var + +Thu Aug 16 18:26:40 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * testXPath.c: another small cleanup closing bug #59110 + +Thu Aug 16 17:59:18 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * win32/dsp/libxml2.def.src: small cleanup closing bug + #59108 + +Wed Aug 15 22:46:01 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * example/gjobread.c: add xmlCleanupParser() before leaving + +Wed Aug 15 14:57:08 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * config.h.in configure.in include/libxml/xmlwin32version.h: + released 2.4.2 + +Wed Aug 15 13:56:22 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * include/libxml/valid.h debugXML.c valid.c: deprecate + the non-boundchecking Sprintf functions, add Snprintf + this should close bug #57984 + +Wed Aug 15 10:46:07 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xmlIO.c: xmlOutputBufferCreateFilename() didn't unescaped + URIs before doing the lookups (pointed by Mark Vakoc) + +Tue Aug 14 18:37:23 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: serious changes on Result Value Trees and NodeSets + w.r.t. deallocation and collect operations. Probably not + 100% clean (merge of allocated trees smells like a problem). + Seems sufficient to close #58943 + +Tue Aug 14 16:12:00 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xmllint.c: adding a --format option + +Tue Aug 14 14:16:24 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: count() was broken on Result Value Tree + * xmlIO.c: fixed file:/// accesses on _WIN32 + +Mon Aug 13 13:22:53 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * libxml.m4: s/LIBXML_VERSION_NUMBER/LIBXML_VERSION/ seems the + macro was renamed, this should close bug #58683 + +Mon Aug 13 12:33:40 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: small fix fixing bug #58539 reported by coolo, in + entity substitution mode text at the end of the entity might + be added due to text coalescing. + * nanoftp.c parser.c: small cleanup + +Wed Aug 8 22:57:05 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * HACKING: added John Fleck right to commit in the doc subdir + +Tue Aug 7 03:05:58 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c testXPath.c valid.c xmllint.c include/libxml/valid.h: + allow to inherit attributes from the DTD directly in the + tree, this is needed for XPath and can be a useful feature. + Inherited namespaces are always provided at the tree level now + * test/defattr* result/defattr* result/noent/defattr*: added a couple + of tests for this feature (XSLT being the prime user). + +Fri Aug 3 14:02:20 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * DOCBparser.c Makefile.am nanohttp.c parser.c testHTML.c + testSAX.c xmlIO.c xmllint.c include/win32config.h + include/libxml/xmlversion.h.in include/libxml/xmlwin32version.h + include/libxml/xmlwin32version.h.in win32/README.MSDev + win32/dsp/*: applied Win32 Facelift No.2 patches from + Igor Zlatkovic for Windows/MSC + +Wed Aug 1 23:21:06 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * SAX.c: unparsedEntityDecl() the URI computation of the + entity wasn't done breaking XSLT unparsed-entity-uri() + +Wed Aug 1 17:44:57 CEST 2001 Daniel Veillard <daniel@veillard.com> + + * xpath.c: fixed a bug when walking the descendants and + the current node has no children + * debugXML.c: show up when a text node is supposed to not be escaped + +Wed Aug 1 01:33:35 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * xpath.c: fixed a bug in xmlXPathNodeTrailingSorted (for now it + worked like the set:leading() function) + * include/libxml/xpathInternals.h: added xmlXPathNodeSetContains + +Tue Jul 31 18:24:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * nanohttp.c: protected an use of EAGAIN, Brian Stafford + +Tue Jul 31 17:48:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/xmlIO.h: apply change to close #58141 + * win32/libxml2/*: update of the MSC projects from Igor Zlatkovic + +Tue Jul 31 17:09:31 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: when the internal subset uses a PE, then the + included entity can use conditional sections. + +Mon Jul 30 12:58:39 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c include/libxml/xpath.h: fixed a serious memory problen + when walking the namespace axis showing up in + libxst/tests/general/bug-12 + * xmlmemory.c: added the possibility to trace a given block + defined by its address + +Sun Jul 29 07:18:53 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: don't override existing encoding specified before + starting xmlParseDocument() + +Sat Jul 28 13:33:10 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/xmlwin32version.h: reinserted, needed for + Windows users of CVS + +2001-07-27 Darin Adler <darin@bentspoon.com> + + * encoding.c: (xmlIconvWrapper): Add cast to fix warning. + * testCatalog.c: Add include of <libxml/parser.h>. + +2001-07-27 Darin Adler <darin@bentspoon.com> + + * include/libxml/.cvsignore: + * include/libxml/xmlwin32version.h: + Remove this file from CVS because it's generated. + +Fri Jul 27 10:03:56 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c include/libxml/parser.h: applied const patches from + Tom Moog #58002 + +Thu Jul 26 18:55:52 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * xpath.c include/libxml/xpath{,Internals}.h: added a function + lookup framework + +Fri Jul 27 01:50:20 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed xmlCopyNode() for documents + +Thu Jul 26 12:40:35 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed bugs #58073 reported by Greg Shtilman + +Thu Jul 26 11:38:37 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixes bug #57652 reported by Morus Walter + +Thu Jul 26 10:24:34 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * nanohttp.c: John Kroll provided a small fix to xmlNanoHTTPSave + +Thu Jul 26 07:16:04 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c parserInternals.c: fixed the xmlLineNumbersDefault() + errors, lesson don't add new functions at 1am before a release + * xpath.c: integrated fix from Bjorn to avoid divide by zero + from XPath initialization when possible. + +Tue Jul 24 15:39:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * result/scripts/base*: removing history/readline changed + this slightly + * include/libxml/parser.h SAX.c parser.c parserInternals.c + xmllint.c: make element content line number generation + optionnal to avoid breaking old apps added interface to switch + +Tue Jul 24 15:06:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: get rid of the readline and libhistory + dependencies by default, release 2.4.1 with IA64 fix + * nanohttp.c tree.c xmlIO.c include/libxml/nanohttp.h + include/libxml/tree.h include/libxml/xmlIO.h: incorporated + John Kroll fixes to allow saving to HTTP via PUT (or + POST of needed). + * doc/html/*.html: regenerated the docs + +Sun Jul 22 05:56:16 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * hash.c include/libxml/hash.h: added xmlHashScannerFull, + xmlHashScanFull and xmlHashScannFull3 to get passed the + three keys as arguments to the callback function + +Thu Jul 19 15:29:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in Makefile.am: removed libxml softlink for good + * include/libxml/*.h *.c doc/Makefile.am: cleanup to get + 100% coverage by gtk-doc + +Tue Jul 17 17:36:46 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlmemory.c include/libxml/xmlmemory.h: debugging on IA64, + fixed serious troubles due to size_t vs. int mismatch + +Tue Jul 17 16:04:36 EDT 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c xmlIO.c: cleaned up some warning on the Alpha + +Mon Jul 16 06:32:44 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * include/libxml/xpath{,Internals}.h xpath.c: added a more + convenient extension API for value and context managing + Now handles external objects through xmlXPathPopExternal, + xmlXPathWrapExternal and xmlXPathReturnExternal. + Added functions for sets operations (intersection, etc.) + +Mon Jul 16 20:05:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/parserInternals.h include/libxml/HTMLparser.h + xmlIO.c tree.c parserInternals.c entities.c encoding.c + HTMLparser.c: cleanup of global variables, marking some + const or private. + +Mon Jul 16 00:17:15 CEST 2001 Thomas Broyer <tbroyer@ltgt.net> + + * include/libxml/xpath.h: exported xmlXPath{NAN,PINF,NINF} + fixed xmlXPathNodeSetItem when passing index=0 + +Sun Jul 15 17:58:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/xmlwin32version.h.in: added xmlCheckVersion() + +Sat Jul 14 19:31:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmllint.c: fixed compilation under Cygwin #57503 + * TODO: update + +2001-07-13 Peter Williams <peterw@ximian.com> + + * config.h.in: add #undef HAVE_DLFCN_H + + * example/Makefile.am (INCLUDES): Compile fix when srcdir != + builddir. + +Fri Jul 13 11:09:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * win32/libxml2/libxml2.def.src: added a couple of exported entries + raised by #57348 and #57381 + +Thu Jul 12 21:20:17 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c HTMLparser.c HTMLtree.c SAX.c debugXML.c parser.c + tree.c xpointer.c: store the line numbder in element->content, + may break some software, need a configuration mechanism + +2001-07-10 Darin Adler <darin@bentspoon.com> + + * .cvsignore: + * example/.cvsignore: + * include/.cvsignore: + * include/libxml/.cvsignore: + Various things that are generated and should be ignored. + +Tue Jul 10 17:47:09 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in include/libxml/xmlwin32version.h: release of 2.4.0 + * doc/xml.html doc/html/*: updated the docs + +Mon Jul 9 22:06:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: fixed "Internal: MIXED struct bad" when #CDATA elements + validation occured on content with element child + +Mon Jul 9 17:59:08 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed XML Base computation which was broken + * debugXML.c: added a base function to the shell + * Makefile.am result/scripts/* test/scripts/*: added scripts + based regression tests, and adding 2 XML Base tests + +Mon Jul 9 12:31:05 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: set properties doc and call xmlSetListDoc for properties + content when grafting them in a different tree. + * aclocal.m4: remove from CVS + +Sun Jul 8 23:09:07 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * win32/libxml2/libxml2.def.src: added some missing entry point + for XPath (Mark Vakoc) + +Sun Jul 8 20:34:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: fixed an old bug raised by Bernhard Zwisch, the I/O + layer should URI-Unescape before trying to open resources. + +Sun Jul 8 16:26:00 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fix the name() bug for elements in the default + namespace reported by Charlie Bozeman + +Sun Jul 8 15:11:05 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c parser.c testXPath.c xpath.c: trying to fix #56948, this + led to an XPath fix, improvements of SAX initialization, and + an added option --nocdata to testXPath + +Sat Jul 7 21:09:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/libxml-doc.el: Felix Natter provided anew version working + with XEmacs too + +Sat Jul 7 02:16:00 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/xpath.h: small cleanup + * doc/xml.html: update + +Fri Jul 6 01:40:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am configure.in include/libxml/xmlwin32version.h: + released 2.3.14 + +Fri Jul 6 00:47:41 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/html/*: rebuilt the docs for the release + * doc/xml.html: added 2.3.14 release. + +Thu Jul 5 22:01:31 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: a bug reported by Stephan Kulow empty nodesets + were not equal to empty strings + +Thu Jul 5 00:52:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c: fixed a URI-Reference computation problem when validating + * xmlIO.c: small cleanup + +Thu Jul 5 00:04:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: improved the description of a couple of interfaces + upon Larry Stamper suggestion + +Wed Jul 4 21:42:24 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c entities.c parser.c: changed completely the way entities + are handled when running the parser in entity substitution mode. + This fixes a bug reported by Stephan Kulow and nearly divides + by 3 the amount of memory required by libxslt to load and process + DocBook TDG. + +Wed Jul 4 18:02:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: fixing a too early root closing problem raised + byt Prashanth Naidu + +Wed Jul 4 01:42:01 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed a missing copy in xmlXPathVariableLookupNS() + raised by Mark Vakoc. + +Tue Jul 3 18:35:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * example/Makefile.am: fixed the include path to add srcdir/include + * Makefile.am configure.in: fix from Albert Chin for iconv detection + and some cleanup + +Tue Jul 3 10:12:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c include/libxml/xpath.h include/libxml/xpathInternals.h: + lot of optimization work, results in significant improvements + when handling really complex XPath queries. Add a small optimizer + for unions, improve [n] and [last()], avoid some costly ops. + +Fri Jun 29 23:26:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/parser.h parser.c: xmlStrstr args are both const + * xpath.c: small cleanup + * xmlGetNsList: reformated, fixed problems if used on Entities + +Thu Jun 28 18:19:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: added 1.8.14 and 2.3.13 releases + +Thu Jun 28 18:16:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in include/libxml/xmlwin32version.h: released 2.3.13 + * Makefile.am example/Makefile.am: workaround automake generating + erroneous deps + +Thu Jun 28 15:08:22 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/win32config.h: bug #56801 Yon Derek provided a patch + to the windows config file. + +Thu Jun 28 14:51:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpointer.c include/win32config.h win32/libxml2/libxml2.def.src + libxml.h : Yon Derek provided a set of changes to compile from + CVS on Windows/MSC + +Thu Jun 28 14:11:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed UTF8 BOM support in push mode + * test/utf8bom.xml result/utf8bom.xml result/noent/utf8bom.xml: + added a specific testcase + +Wed Jun 27 18:33:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: added --push regression tests + * parserInternals.c: the XML parser segfaulted in --push mode + +Wed Jun 27 13:09:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: moved the symlinks detection within a CVS + check, this is not portable and will be removed soon. + * xpath.c: small cleanup/speedup + +Tue Jun 26 18:05:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in doc/xml.html include/libxml/xmlwin32version.h: + release of 2.3.12 + * parser.c: make an error message if unknow entities in all cases + +Tue Jun 26 09:46:29 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * uri.c: fixed 2 uri normalization bugs on '//' reduction + +Mon Jun 25 18:06:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/libxml/Makefile.am: Laszlo Peter pointed out that + includes were installed in the wrong dir + +Mon Jun 25 17:07:37 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/html.xml: warn against sending code to exhibit bugs. + +Sun Jun 24 23:31:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: patch to xmlXPathFormatNumber for the optimizer on + Tru64 from Thomas Leitner + +Sun Jun 24 14:05:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * AUTHORS: added William and Bjorn + * include/libxml/*.h *.c README doc/*.html etc.: changed old email to + daniel@veillard.com hopefully I won't have to do this again + * doc/Makefile.am doc/html/*.html: cleanup makefile, checked that + docs can be rebuilt cleanly now + * include/libxml/xml*version.h*: removed include/libxml/xmlversion.h + from CVs it's generated, added include/libxml/xmlwin32version.h + also generated but which should change far less frequently. + * catalog.c nanoftp.c: made sure to include libxml.h not + libxml/xmlversion.h directly + * include/libxml/*.h: include xmlwin32version.h instead of xmlversion.h + when compiling on WIN32 and MSC + +Sat Jun 23 23:54:12 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/Makefile.am include/libxml/Makefile.am configure.in: + fixed make distcheck and rebuilding the rpms + +Sat Jun 23 20:50:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: should finish the migration of exported includes + into a real include/libxml in CVS, at least for CVS users. + * removed the exported headers, added in include/libxml (as well + as xmlversion.h.in). + +Sat Jun 23 20:37:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: fixed the way to detect symlink + +Sat Jun 23 20:30:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: updated, include/libxml is now a real CVS dir + +Sat Jun 23 19:36:31 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/libxml-doc.el: a new version of libxml-doc.el. This new + version works with both libxml1 and libxml2 (it autodetects + the prefix of the html-files) from Felix Natter. + * doc/xml.html: updated doc accordingly + +Sat Jun 23 18:30:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed the bug generating a template loop in libxslt + when using docbook-xsl-1.4, * should filter out document nodes + * HACKING: added William + * TODO: updated + +Fri Jun 22 18:02:37 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/FAQ.html: added a warning about gcc-3.0 + * doc/xml.html: added reference to gdome2 and removed a confusing + sentence + +Fri Jun 22 17:02:16 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlversion.h: okay this is a generated file, but Windows + users need it and they can't generate it, and I want CVS + Windows users ... + * win32/libxml2/libxml2_so.dsp: Windows project file for + the shared lib version of libxml2 + * win32/libxml2/libxml2.def.src: bug #56527 set of exported + resources needed for libxslt/xsltproc by Yon Derek + +Fri Jun 22 16:39:36 CEST 2001 Bjorn Reese <breese@users.sourceforge.net> + + * trio.c: MSVC fix (provided by Igor Zlatkovic) + +Fri Jun 22 12:42:16 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/win32config.h: another small fix for ATTRIBUTE_UNUSED + +Fri Jun 22 12:42:16 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * include/win32config.h: Yon Derek provided a first fix + to be able to compile libxslt/xsltproc on Windows + +Fri Jun 22 00:04:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: attempt to work around what seemed a gcc optimizer + bug when handling floats on i386 http://veillard.com/gcc.bug + * tree.c entities.c encoding.c: doing some cleanups while + chasing it + +Thu Jun 21 13:13:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: cleanup when --without-debug is specified + * xinclude.c xpath.c xpathInternals.h xpointer.c: cleanup + w.r.t. --without-debug and other include points + * catalog.h testCatalog.c: a bit of cleanup and prepare for XML + Catalogs + * configure.in entities.h tree.h HTMLparser.c: removed + --without-corba, made the _private field mandatory + +Wed Jun 20 19:37:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c parserInternals.c encoding.c: Since Notepad on Win2k + outputs a BOM in UTF8, an errata has been issued to avoid the + problem, that was the most reasonable solution... Add support + for a leading UTF8 BOM in entities. + +Wed Jun 20 15:38:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: fixed a bug found when post validating an entity ref + * xmllint.c: added --loaddtd and sligly changed --postvalid to + activate it too + +Tue Jun 19 20:03:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c xinclude.c xpointer.c: bug #56402 exposed a number of + weakness in the node copy the XPointer and the XInclude + implementations. Serious cleanup. + +Tue Jun 19 14:50:18 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: Kjartan Maraas provided a small patch to + add xml2-config.in to EXTRA_DIST + +Tue Jun 19 13:04:10 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c tree.c parserInternals.c parser.c: Stephan Kulow + provided another failing case found in KDE, the way the + ctxt->vctxt.nodeTab was allocated and freed changed over + time but it wasn't completely cleaned up. This should fix it. + +Sun Jun 17 19:56:33 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: Stephan Kulow also raised the fact that line number + could get miscounted making debug harder, fixed the problem + in xmlParseCharData() + +Sun Jun 17 19:17:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: Stephan Kulow pointed out a problem when validating + and using an empty entity, forgot a 'break' in a case. + +Sun Jun 17 16:47:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed xmlHasNsProp() accordingly to bug #55683 + * doc/xml.html: updated with 2.3.11 + +Sun Jun 17 12:24:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * TODO: updated adding cleanup of generated doc + * configure.in: prepared to release 2.3.11 + * xmllint.c: added --version for bug reporting + * doc/html/*.html: rebuilt the doc + +Sat Jun 16 23:23:33 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: first part of the work on selecting namespace to + fix bug #56115 + +Sat Jun 16 00:20:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am example/Makefile.am: Laszlo PETER provided a fix + when using -liconv + * TODO: updated + +Fri Jun 15 07:08:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.[ch]: more work on the HTML serialization routnes, + cleanup, encoding support. + +Thu Jun 14 10:31:17 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: Thomas Broyer suggested a better patch for the / arg + +Thu Jun 14 01:01:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: bug detected by Ankh when / is used as a function arg + +Wed Jun 13 23:08:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.[ch] HTMLtree.c: stored the inline/block property + of element and use it to avoid outputting formatting spaces at + the wrong place. Implemented the format parameter for HTML save. + * result/HTML/doc2.htm result/HTML/doc3.htm result/HTML/fp40.htm + result/HTML/script.html result/HTML/test2.html result/HTML/test3.html + result/HTML/wired.html: of course this impact the result of a + number of HTML tests + +Thu Jun 14 09:49:09 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.[ch]: started augmenting the HTML save API with + encoding and formatting parameters + +Wed Jun 13 09:44:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.h: cleanup and started evaluating the work needed on + revamping the HTML output code + +Mon Jun 11 19:29:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c: handling of PIs and <?sgml-declaration in entities. + +Tue Jun 12 08:46:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: fixed bug #56049, forgot one check in the + validation routine + +Tue Jun 12 08:09:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch]: grrr ... namespace is a C++ reserved keyword + +Tue Jun 12 06:29:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * libxml.h: fixed an error in last commit + * doc/FAQ.html: added an entry for compilation from CVS + +Mon Jun 11 10:07:29 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlversion.h.in libxml.h: Cygwin patches + * tree.c: xmlFreeNodeList patch similar to xmlFreeNode one + * tree.h: cleanup + +Sat Jun 9 19:16:00 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: patched xmlFreeNode() to avoid freeing() a static + memory block in a strange case where libxml is linked twice + in the binary. + +Sat Jun 9 18:39:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: (a? , b? , c? , ... , z?) was storing/restauring + state far too often, simple fix used to avoid it. + +Sat Jun 9 16:10:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xinclude.c: Raphael Hertzog had a trouble with DTD nodes + being processed, applied his patch + * tree.c: fixed a bug raised in xmlStaticCopyNodeList() + +Sat Jun 9 15:50:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * nanoftp.c nanohttp.c uri.c include/win32config.h: Igor Zlatkovic + provided fixes to compile on MSCC again + * win32/libxml2/libxml2.def.src win32/libxml2/libxml2*.dsp: he + also provided an update for the project files. + +Thu Jun 7 21:52:10 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: applied Steve Tinney patch to xmlNewNsProp to fix + bug #55810 + +Thu Jun 7 21:29:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed xmlGetNsProp() to close bug #55683 + Note this requires libxslt to use it's own function instead. + +Thu Jun 7 18:06:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: when in a pre element no formatting space should + be added. + * test/HTML/pre.html result/HTML/pre.html*: added a regression test + +Thu Jun 7 17:29:38 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: added tests for signal() and signal.h + +Fri Jun 8 10:17:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: robert pointed out xmlXPathNINF was not initialized + +Fri Jun 8 10:01:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/libxml-doc.el: Felix Natter provided a new version for + libxml2 + +Fri Jun 8 07:20:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: when in a pre element no formatting space should + be added. + +Wed Jun 6 18:07:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: add -mieee to CFLAGS when compiling on Linux/alpha + +Thu Jun 7 06:44:01 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c: implemented the <?sgml-declaration encoding="xxx"?> + hack + * tree.[ch]: added xmlHasNsProp as suggested in bug report #55653 + * uri.c: fixed a warning + +Tue Jun 5 22:54:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: trying to close bug #55772 escaping in script + elements + * doc/xml.html: suggest to send mail to the list + +Tue Jun 5 19:11:02 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * error.c: attempt to fix the xmlGetVarStr breakage once and for + good. Use a macro and based on the solution provided in + vsnprintf manual page from GNU. + +Tue Jun 5 14:46:10 CEST 2001 Bjorn Reese <breese@users.sourceforge.net> + + * error.c: Workaround for non-preserving variadic list. + * trio.c trio.h triop.h strio.c strio.h: Upgraded to trio baseline 1.4 + +Sat Jun 2 06:12:33 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: added 2.3.10 release + +Fri Jun 1 11:27:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: releasing 2.3.10 + +Thu May 31 20:42:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: Gary Pennington spotted a few troubles with file:/// + +Thu May 31 20:18:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * encoding.c: Robert Collins provided a patch to add the + "US-ASCII" encoding alias + +Wed May 30 21:12:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c encoding.[ch]: William M. Brack provided a set of UTF8 + string oriented functions and started cleaning the related areas + in xpath.c which needed fixing in this respect + +Wed May 30 20:30:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: applied patch from Jaroslaw Kolakowski to close bug + #55380 + * tree.c: patch to xmlNodeGetContent() to get CDATA section content + +Mon May 28 12:56:29 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * TODO: updated + * nanohttp.[ch] : started adding APIs to get the redirected URL + when this occurs (needed for further base computation + * tree.h: cleanup + * encoding.c: cleanup + * SAX.c: minor change around ctxt->loadsubset + +Fri May 25 09:36:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am include/Makefile.am: small change to have + include/libxml rebuilt if working from CVS. + * uri.c: applied another patch from Carl Douglas for URI escaping, + this should close bug #51876 + +Wed May 23 15:40:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xinclude.c: fixed XInclude recursive behaviour bug #54678 + * result/XInclude/recursive.xml test/XInclude/docs/recursive.xml + test/XInclude/ents/inc.txt test/XInclude/ents/sub-inc.ent: + added specific regression test + * parser.h: preparing for the XSLT mode where DTD inherited + attributes are added to the tree. + +Wed May 23 13:59:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xinclude.[ch]: Updated the namespace for the Last Call version + * result/XInclude/include test/XInclude/include: updated the + testsuite accordingly + +Wed May 23 12:27:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * uri.[ch]: applied a patch from Carl Douglas for URI escaping, + related to bug #51876 + +Tue May 22 18:46:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed a gross mistake in base computation, xml:base is + not completely correct yet (need cascade). + * xpath.[ch]: added the few things needed to find a function name + and URI from the XPath context when it is called. + +Tue May 22 17:00:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * catalog.[ch]: fixes and add xmlLoadCatalogs() + * DOCBparser.c: small cleanup + * xmllint.c: added a --catalogs option to load catalogs from + $SGML_CATALOG_FILES + * tree.c: cleanup + * configure.in: iconv library fixup, ICONV_LIBS + +Mon May 21 16:05:22 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * catalog.c: handling of CATALOG entries. detection of recursion, + and a few bugfixes + * xpath.c: fixing bug #54951 QNAME with no prefix should not match + against the default namespace + +Mon May 21 10:14:07 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: Joe Orton reported a bug found with IRIx compiler. + +Sun May 20 15:15:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed propagation context info when parsing an + external entity. + * doc/html/*.html: regenerated a couple of docs + +Sat May 19 17:11:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: update with 2.3.9 informations + +Sat May 19 16:50:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.h debugXML.h parserInternals.h tree.h valid.c + xmlversion.h.in xpathInternals.h xpath.h: some cleanup for gtk-doc + * doc/html/* : rebuilt the docs + * valid.c: small patch which may improve some case when + validating. + +Sat May 19 15:20:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: Closed bug #54891 + * result/HTML/cf_128.html* test/HTML/cf_128.html: added the test + to the suite + +Thu May 17 14:15:07 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * encoding.h hash.c nanoftp.h parser.h tree.h uri.h xlink.h xpointer.c: + applied a documentation patch from LotR and filled in a few missing + descriptions + +Wed May 16 23:02:41 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c tree.c parser.c: speed optimizations at the parser level + document tree freeing and xpath evaluation + +Wed May 16 12:55:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c parser.h parserInternals.h: fixed a couple of + interfaces for handling memory buffer input to const char * + upon suggestion of JamesH. + +Tue May 15 17:22:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: LoTR sent a patch fixing the previous commit + +Tue May 15 14:40:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: trying to deal again with the stoopid -R linking + flag of Solaris + +Tue May 15 12:49:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.h: two nodeset access macros from Thomas Broyer + +Tue May 15 11:42:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c xpath.h xpathInternals.h: apply an XPath API cleanup + patch from Thomas Broyer + +Tue May 15 10:52:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c test/VCM/v2[34].xml: Fixed bug #54631 added specific test + case + * INSTALL: was empty added stuff from the FAQ + +Fri May 11 19:37:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch]: fixing bug #54446, by cleaning some bugs in the + attributes handling and #54433 by adding xmlUnsetProp() + and xmlUnsetNsProp() + +Fri May 11 16:07:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: Patch from Jonas Borgström + (htmlGetEndPriority): New function, returns + the priority of a certain element. + (htmlAutoCloseOnClose): Only close inline elements if they + all have lower or equal priority. + * result/HTML: this of course changed a number of tests results. + +Thu May 10 17:30:22 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c catalog.c: plugged in the default catalog resolution + * doc/gnome-xml.sgml: linked in the Docbook parser and catalog + documentations + * doc/html/libxml-*.html: rebuild added the missing ones to CVS + +Thu May 10 16:14:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am xmlversion.h.in configure.in include/Makefile.am: + integrating catalogs + * catalog.[ch] testCatalog.c: adding a small catalo API + (only SGML catalog support). + * parser.c: restaured xmlKeepBlanksDefault(0) API + +Wed May 9 12:50:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: zb@bisp.com reported an error in xmlNodeGetLang() + +Tue May 8 12:31:40 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: added xmlParseExternalEntityPrivate() to allow + propagation of ctxt->_private when parsing external entities + +Tue May 8 10:26:22 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: fixed the bug reported by Bjorn in htmlNodeDump + +Tue May 8 09:30:12 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: fixed a small portability problem with AM_CONDITIONAL + +Mon May 7 22:44:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: warn when indeterminist content model is detected + * result/VC/ElementValid8: this adds a message + * Makefile.am: add --novalid for VCM tests + * parserInternals.c: added a call to Init memory + +Fri May 4 19:51:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: fixed htmlNewDoc SYSTEM and PUBLIC ID inversion + when both parameters are NULL. + +Fri May 4 17:19:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: applied small patch from Gary Pennington, reindented + some part of the code. + +Thu May 3 13:10:43 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in doc/xml.html doc/html/*: preparing for 2.3.8 + release, updated and regenerated the docs + +Thu May 3 12:47:46 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c result/XPath/expr/floats : clarified and cleanup + printing of abnormal floats in tests. + +Thu May 3 10:25:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: trying to fix the problem reported by Jonas Borgström + * results/HTML/ : a few changes in the output of the HTML tests as + a result. + * configure.in: tying to fix -liconv where needed + +Wed May 2 19:10:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: fixed a stupid error + +Wed May 2 18:39:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in Makefile.am: make the inclusion of the trio + modules in the library conditional + +Wed May 2 14:39:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c: patche from László Kovács, fixed entities refs + in attributes handling + +Wed May 2 12:56:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: Bjorn Reese provided a fix for a problem on buffer + flushing + +Mon Apr 30 22:29:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fix of an XSLT namespace bug reported on the list + general/bug-8- + +Mon Apr 30 19:42:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * strio.h trio.c: Dan McNichol suggested a couple of small + fixes for AIX 4.3.3 using Visual Age 5.0.2 compiler + +Mon Apr 30 13:44:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c parser.c encoding.c: spent a bit more time looking + at the parsing speed and DOM handling. Added a few more + speedups. + +Sun Apr 29 21:53:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: small but effective parsing speed improvement + +Sun Apr 29 19:02:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: default on the DocBook parser inclusion (for Gnome) + * DOCBparser.h: fixed a header reference + +Sat Apr 28 19:00:39 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in xpath.c: applied Bjorn patches for FPE on the + alpha + +Sat Apr 28 18:54:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch] xmlIO.h: applied patch from Joe McAlerney to add + xmlSaveFormatFileTo() + +Sat Apr 28 16:33:05 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: simple and efficient optimization, XPath functions + aways bind to the same code, cache this + * TODO: updated (by saying some is obsolete) + +Sat Apr 28 14:23:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: more cleanup work on XPath name parsing routines + +Fri Apr 27 19:06:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parserInternals.c xpath.[ch]: some UTF8 cleanup on + xmlXPathParseName + * xpath.c: Igor Zlatkovic suggested a change for NAN and MSC + * debugXML.c: avoid compilation problems if compiling without + HTML support, Igor Zlatkovic + * win32/libxml2/libxml2.def.src: being able to compile without + XPath on Windows + +Thu Apr 26 22:53:03 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * libxml.m4: yet another patch from Toshio Kuratomi + +Thu Apr 26 21:27:43 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * libxml.m4 libxml2-spec.in: new patches from Toshio Kuratomi + +Thu Apr 26 20:53:48 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch]: added xmlSaveFormatFile interface for saving + and indenting a file. + +Thu Apr 26 16:35:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed bug #53689 related to processing-instruction() + +Thu Apr 26 12:57:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c: patche from László Kovács + +Thu Apr 26 11:31:54 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: applied fixes from Christian Glahn bug report #53391 + +Thu Apr 26 11:14:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * error.c: Jean François Lecomte provided a complete description + and a fix to bug #53537 + +Thu Apr 26 09:42:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * libxml.m4: added AM_PATH_XML2 provided by Toshio Kuratomi + +Wed Apr 25 21:05:31 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c SAX.c: a bit more work on entities processing. + Still Need to cleanup XML output and references in attributes + +Wed Apr 25 17:52:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c include/Makefile.am: two patches from László Kovács + +Wed Apr 25 14:56:26 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: trying to fix #53574, not completely complete, + I would like xmllint --copy --debug test/ent1 and + xmllint --debug test/ent1 to show the same result. + * xpath.c: fix a bug when trying to sort namespace nodes + +Wed Apr 25 12:28:57 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: real fix for #53402 + +Tue Apr 24 17:36:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c HTMLtree.h : closing #53402 i.e. output of + PIs when using xsl:output + * valid.c: closing #53537 some case generate segfaults if there + is validity errors + +Tue Apr 24 15:19:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c testDocbook.c DOCBparser.c: more work on the support + of external parsed entities, added --noent to testDocbook + * valid.c: Garry Pennington found an uninitialized variable + access in xmlValidateElementContent() + +Tue Apr 24 14:41:25 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c : HTML parsing still sucks ... trying to deal + with madness + * result/HTML/ : this modified the result of the regression tests + a lot. + +Tue Apr 24 14:10:38 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * entities.c: xmlEncodeEntitiesReentrant fixed a few accesses + to doc where it wasn't checked against NULL reported by + Jens Laas + +Tue Apr 24 13:21:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: Jonas Borgström patch, the <td>, and <th> elements + now means the end of any open <span>,<font>,<a>,<b>,<i>,<u>. + +Mon Apr 23 15:40:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * DOCBparser.c DOCBparser.h testDocbook.c configure.in Makefile.am + xmlversion.h.in: started (re)integrating the DocBook SGML parser. + * SAX.[ch]: cleanup and updates for DocBook + * debugXML.c parser.h tree.[ch] valid.c xpath.c: small macro or + ex SGML identifier changes + * valid.c: removed a static unused function. + +Mon Apr 23 11:05:56 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLtree.c: applied change for Paul Sponagl on script saving + * Makefile.am: the warning about entity title.xml are normal. + +Sun Apr 22 22:09:35 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: release of 2.3.7 + * Makefile.am: fixing make distcheck + +Sun Apr 22 21:29:52 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/html/* doc/xml.html: updated and regenerated the docs + +Sun Apr 22 21:11:45 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed the XPointer problem introduced in 2.3.6 + +Sun Apr 22 14:11:58 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed #53388 with the provided patch + +Sun Apr 22 12:34:41 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: Bjorn detected an invalid memory access. Fixed + vstateVPush() + +Sun Apr 22 10:49:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed xmlXPathCompile to detected unproperly ended expr + +Sat Apr 21 18:27:51 CEST 2001 Bjorn Reese <breese@users.sourceforge.net> + + * libxml.h: new header used only for the compilation of libxml + * HTMLparser.c HTMLtree.c SAX.c debugXML.c encoding.c entities.c + error.c hash.c list.c nanoftp.c nanohttp.c parser.c + parserInternals.c testHTML.c testSAX.c testURI.c testXPath.c + tree.c uri.c valid.c xinclude.c xlink.c xmlIO.c xmllint.c + xmlmemory.c xpath.c xpointer.c: libxml.h integration + * trio.[ch] triop.h strio.[ch]: upgraded to the latest trio + baseline (version 1.2 plus a single patch). + * xpath.c result/XPath/expr/floats test/XPath/expr/floats: parses + scientific notation for numbers. Tests added. + * xpath.c: formatting of numbers changed to use sprintf + (contribution from William Brack) + +Sat Apr 21 16:12:59 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: cleanup, more useful debugging + * parserInternals.c: cleanup vctxt.nodeTab (de)allocation + * xmlIO.c: entity loading is printed as an error when validating + +Sat Apr 21 12:25:49 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: fixed to validate within entities + * test/VCM/v22.xml: added a specific testcase + +Fri Apr 20 17:45:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: forgot an epsilon transition in for ()+ + * test/VCM/v21.xml : added a specific test case + +Fri Apr 20 15:46:04 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: removed a state explosion exhibited by RSS + * test/valid/rss.xml result/valid/rss.xml*: added the testcase + from bug #51872 + +Fri Apr 20 14:52:44 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.[ch] tree.h: worked *hard* to get non-determinist content + validation without using an ugly NFA -> DFA algo in the source. + Made a specific algorithm easier to maintain, using a single + stack and without recursion. + * Makefile.am test/VCM/*.xml: added more tests to "make Validtests" + * hash.c: made the growing routine static + * tree.h parser.c: added the parent information to an + xmlElementContent node. + +Wed Apr 18 23:33:11 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c parser.c xpath.c: generating IDs when not validating + from an external parsed entity was poisoning the ID has table + with removed values. This was killing XSLT on the KDE help + browser. + +Wed Apr 18 17:09:15 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * entities.h: andrew@ugh.net.au detected a double declaration + +Wed Apr 18 15:06:30 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * debugXML.c hash.c tree.h valid.c : some changes related to + the validation suport to improve speed with DocBook + * result/VC/OneID2 result/VC/OneID3 : this slightly changes + the way validation errors get reported + +Wed Apr 18 11:42:47 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c HTMLtree.c: applied part of the patches provided + by P C Chow and William M. Brack for XSLT HTML output + +Mon Apr 16 19:44:36 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlversion.h.in win32config.h win32/libxml2/*: applied + Igor Zlatkovic patches for MSC compilation and added his + updates + +Tue Apr 17 10:08:19 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed xmlXPathNodeCollectAndTest() to do proper + prefix lookup. + * parserInternals.c: fixed the bug reported by Morus Walter + due to an off by one typo in xmlStringCurrentChar() + +Thu Apr 12 17:41:09 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c result/HTML/*: revamped the way the HTML + parser handles end of tags or end of input + +Thu Apr 12 10:50:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch] : added xmlDocCopyNode for gdome2 support + +Wed Apr 11 16:37:50 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.h: include xmlmemory.h this seems to havoid a nasty glibc + bug where the linktime verions of free() won't work ... + +Wed Apr 11 14:21:31 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * config.h.in configure.in xmlversion.h.in: added ansidecl.h test + +Wed Apr 11 13:50:42 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: added 2.3.6 release + +Wed Apr 11 13:26:34 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed xmlStringGetNodeList() to handle charrefs + * result/wml.xml: resulted in a small output change + +Wed Apr 11 09:47:55 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: xmlNewDoc was missing the charset initialization + * xmllint.c: added --auto to autogenerate a doc, allow to + reproduce the problem fixed on xmlNewDoc + +Tue Apr 10 18:13:10 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: trying to get 52979 solved + * tree.c result/ result/noent/: trying to get 52712 solved, this + also made me clean up the fact that XML output in general should + not add formating blanks by default, this changed the output of + a few tests + +Tue Apr 10 16:30:20 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: Bill Brack pointer an error in detecting a null nodeset + +Sun Apr 8 15:07:16 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: finally released 2.3.6 + +Sun Apr 8 11:39:21 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: checking for null pointer generated by new code + +Fri Apr 6 12:53:05 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed a [] evaluation problem reported + * test/XPath/tests/simpleaddr: extended test + * result/XPath/simpleaddr: updated result + +Wed Apr 4 02:07:53 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmllint.c: Dan Timis reported a portability problem + on Macs without mmap, fixed it. + +Tue Apr 3 20:20:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * testXPath.c : added a --tree option allowing to display the + tree dump of the XPath expression + +Mon Apr 2 17:13:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed a memleak when comparing nodesets + * HTMLtree.c: don't invent the HTML doctype if not available (XSLT) + * tree.c: added a TODO + +Tue Mar 27 14:32:06 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in Makefile.am config.h.in xmlversion.h.in: detect if + we need string functions + * trio.[ch] strio.[ch]: embedded the Trio-0.23 string functions + to be able to use them where needed. Applied some changes + to reduce name linking pollution and compile in only what's + needed. + * HTMLtree.c debugXML.c entities.c error.c nanoftp.c valid.c + xlink.c xmlversion.h.in xpath.c: got rid of the #ifdef + for the string manipulation functions + * xmlmemory.[ch]: removed DEBUG_MEMORY_FREED and added it automatically + to the free() function of xmlmemory.c + * entities.c HTMLtree.c parserInternals.c tree.c uri.c valid.c + xinclude.c xmlIO.c xpath.c xpointer.c: removed the MEM_CLEANUP + usage. + +Tue Mar 27 02:30:23 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * error.c: applied the context output patch of the error + handling submitted by Chuck Griffith + * error/VC/*: this slightly change some error logs + +Tue Mar 27 00:51:27 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed line number reporting on error + +Mon Mar 26 23:21:41 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: Sullivan and Darin found a parser bug, + applied the patch. + +Mon Mar 26 18:24:52 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c HTMLtree.c SAX.c debugXML.c error.c parserInternals.c + testHTML.c testSAX.c tree.c valid.c xmlIO.c xmlmemory.c + xmlversion.h.in xpointer.c: of course the way I defined + UNUSED breaks on old gcc version. Try to be smart and + also define it directly in xmlversion.h + * configure.in: removed -ansi flag from the pedantic set + +Sat Mar 24 17:45:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + Huge cleanup, I switched to compile with + -Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit + -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat + -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow + -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return + -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline + * HTMLparser.[ch] HTMLtree.c SAX.c debugXML.c encoding.[ch] + encoding.h entities.c error.c list.[ch] nanoftp.c + nanohttp.c parser.[ch] parserInternals.[ch] testHTML.c + testSAX.c testURI.c testXPath.c tree.[ch] uri.c + valid.[ch] xinclude.c xmlIO.[ch] xmllint.c xmlmemory.c + xpath.c xpathInternals.h xpointer.[ch] example/gjobread.c: + Cleanup, staticfied a number of non-exported functions, + detected and cleaned up a dozen of problem found this way, + avoided a lot of public function name/typedef/system names clashes + * doc/xml.html: updated + * configure.in: switched private flags to the really pedantic ones. + +Thu Mar 22 22:44:15 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: 2.3.5 + * doc/html/*: rebuilt the docs + +Thu Mar 22 15:36:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed a reported bug in NOTATION parsing + * uri.c: accepted but not fixed bug 51876, added TODO + * Makefile.am: fixed bug 51876 + +Thu Mar 22 13:41:22 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * config.h.in configure.in error.c: fix a compilation problem + on platforms without vsnprintf (xml@thewrittenword.com) + +Wed Mar 21 19:04:34 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed a function name header typo + * SAX.c: notations can also occur in external subset. + +Tue Mar 20 14:21:28 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * error.c: removed a C++ like comment + +Tue Mar 20 12:22:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixing bug 52299 strange condition leading + to a parser crash due to a buffer overflow + * result/noent/attrib.xml result/attrib.xml test/attrib.xml: + added the specific test case + +Mon Mar 19 16:50:52 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.[ch]: still a lot of cleanup based on XSLT, added + xmlXPathConvert{String,Number,Boolean} to be able to make + type casts without a context stack, fixed some implementation + problems related to the absence of context at parse-time, + added xmlXPathEvalPredicate() and xmlXPathFreeCompExpr() + in the public API too + * xpointer.c xpathInternals.h: we need to know at parse time + whether we are compiling an XPointer + +Mon Mar 19 11:54:31 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.[ch] xpointer.c: restaured the Binary and API compatibility + cleaned up the parser internals, refactored XPath code, added + new compilation based APIs and cleanly separated public and + private APIs. + +Mon Mar 19 00:59:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.h: the comp field must be added at the end to avoid + killing binary compat. + +Mon Mar 19 00:11:18 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: detect XPath memleaks in regreson tests + * error.c: fixed and error w.r.t. error reporting still using + stderr + * hash.c: added new line at end of file + * tree.h: minor cleanup + * xpath.[ch] xpointer.[ch]: Major changes ! Separated XPath + expression parsing from evaluation, resulted in a number of + changes internally, and in XPointer. Likely to break stuff + using xpathInternals.h but should remain binary compatible, + new interfaces will be added. + +Wed Mar 14 20:34:02 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: fixed a couple of problems reported by + okiddle@yahoo.co.uk and allanc@chickenandporn.com when compiling + without gcc on non linux platforms. + +Wed Mar 14 20:13:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/Makefile.am configure.in: yearke@eng.buffalo.edu suggested + a fix for --with-html-dir= configure support. I hope it won't + break rpm generation + +Wed Mar 14 17:28:49 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: one function comment cleanup. + +Wed Mar 14 14:55:46 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * SAX.c: external subset notations were improperly registered + in the internal subset. + +Tue Mar 13 10:28:49 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * README.cvs-commits: added, pointing to HACKING + * HACKING: updated + +Mon Mar 12 22:09:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: and Matt Sergeant found one in the XML push + parser (erroneous check I forgot to remove when I fixed the + main parser). + +Mon Mar 12 19:19:04 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: ptittom found a small bug in UnaryExpr + +Sat Mar 10 13:09:53 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: bumped to 2.3.4 + * error.c: fixed bug #51860 + * tree.c: fixed bug #51861 + * valid.c: cleanup, more debug, failed to fix one bug crap ... + * tree.[ch] : added xmlDefaultBufferSize + * nanoftp.c: typo in function name header block + * doc/xml.html : updated, added link to XML::LibXSLT + * doc/html/* : rebuilt the docs + +Wed Mar 7 20:43:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c SAX.c: the new content parsing code raised an + ugly bug in the characters() SAX callback. Found it + just because of strangeness in XSLT XML Rec ouptut :-( + +Wed Mar 7 16:50:22 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: Martin Baulig suggested to add -lm + * tree.c: found another bug in xmlNodeGetContent() + +Tue Mar 6 09:21:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: Bjorn found the error related to strictness of comparison. + +Mon Mar 5 21:47:31 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: trying to fix the Dtd parsing problem reported + by Gary, side effect of last week speed optimizations. + +Sat Mar 3 19:45:59 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xml2Conf.sh.in: fixes pointed out by Fredrik Hallenberg + * parserInternals.c: removed unneeded test raised by Stric + +Sat Mar 3 13:04:37 CET 2001 Bjorn Reese <breese@users.sourceforge.net> + + * xpath.c: Fixed xmlXPathNodeCollectAndTest (problem reported + and fixed by William Brack). Added xmlXPathFormatNumber. + Changed the sorting slightly. + * configure.in Makefile.am example/Makefile.am: Added -lm. + Please note that applications linking with libxml2, must + also like with the math library from now on. + +Sat Mar 3 07:38:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: fixed loop reported by Marc Sanfacon + +Sat Mar 3 02:10:24 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: one must report spaces even if the Dtd element + content proves that this is not part of the element content. + * result/valid/*.xml: this changed the ouptu slightly + +Thu Mar 1 17:53:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: bumped to 2.3.3 + * doc/xml.html: updated + +Wed Feb 28 00:43:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: minor doc fix + * xpath.c: deallocation issues when a result tree has been + converted to a node-set + +Mon Feb 26 22:09:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: oops corrected dates s/2000/2001 + +Mon Feb 26 12:48:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: new patch from Gary Pennington + +Mon Feb 26 09:30:23 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: applied patch from Ankh + +Mon Feb 26 03:34:43 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xinclude.c: fixed a problem building on Mac + +Sun Feb 25 21:52:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: more work on increasing parsing ferformances + +Sun Feb 25 18:03:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlmemory.h HTMLparser.c HTMLtree.c entities.c parser.c + xpath.c xpointer.c tree.c uri.c valid.c xinclude.c xmlIO.c: + avoiding memcpy in production builds MEM_CLEANUP macro use + * parser.[ch] parserInternals.c: optimizations of the tightest + internal loops inside the parser. Better checking of I/O + flushing/loading conditions + * xmllint.c : added --timing + +Sun Feb 25 05:48:51 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: bumped to 2.3.2 + * doc/xml.html: updated for release + +Sat Feb 24 14:07:52 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: found a memleak and fixed a nasty bug + +Sat Feb 24 03:35:48 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmllint.[c1] : added return code errors for xmllint + * xpath.c: specific debug dump function for result value trees + +Thu Feb 22 07:52:27 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: finally implemented xmlXPathCompareNodeSets + * test/XPath/expr/floats results/XPath/expr/floats: added + a test for float expressions + +Tue Feb 20 18:57:54 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed xmlNodeGetContent, it was not recursing on child + * parserInternals.[ch]: trying to speed up parsing + * xpath.c : speeded up node set equality op + +Mon Feb 19 19:01:57 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am valid.c list.[ch]: Gary Pennington provided a + better handling of ID/IDREF and the list modules associated + * configure.in: small CFLAGS cleanup + +Mon Feb 19 16:13:22 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: fixed iconv detection on AIX (stric) + +Mon Feb 19 10:59:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed "*" (unbelievable !) and a couple of warnings + +Sun Feb 18 17:52:37 MET 2001 Bjorn Reese <breese@users.sourceforge.net> + + * xpath.c: fixed whitespace handling in xmlXPathStringEvalNumber, + and optimized xmlXPathNodeSetSort + +Sat Feb 17 14:18:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: bug fix when context size is 0 + * parser.c: I like Norm's Dtd because they still manage to break + the parser occasionally + +Fri Feb 16 14:20:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: xmlXPathEqualNodeSetFloat the arg is really a double now + +Fri Feb 16 01:10:06 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.[ch] parser.c xpath.c: fixed the problem of addressing + attributes within the XML-1.0 namespace + +Thu Feb 15 16:53:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpathInternals.h: exported a few axis functions + * doc/xml.html: updated the doc + +Thu Feb 15 15:57:14 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: applied patch from Daniel van Balen for OpenBSD + and bumped version to 2.3.1 + * HTMLtree.c result/HTML/doc3.htm result/HTML/wired.html: the + attempt to find autoclosing was simply broken, removed it, + updated the examples, this is better + +Wed Feb 14 11:35:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * hash.[ch]: added Paolo Casarini patch to provide Delete from + hash functionnalities. + * doc/html/* : rebuild the doc + +Tue Feb 13 18:01:48 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c result/XPath/tests/chaptersprefol: bugfixes on order and + on predicate + * HTMLparser.[ch] HTMLtree.c result/HTML/doc3.htm.err + result/HTML/doc3.htm.sax result/HTML/wired.html: sometimes one + really want to have tags closed on output even if we accept + unclosed ones on input + +Mon Feb 12 18:33:20 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: ouch don't free NULL, rare case fixed + * tree.c: don't coalesce text nodes if they don't have the + same behaviour wrt escaping on output + +Sun Feb 11 21:15:41 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: small fixup + * SAX.c: don't warn on empty namespaces. + +Thu Feb 8 11:28:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * README: a bit of cleanup + * configure.in: preparing for 2.3.0 release + +Thu Feb 8 10:37:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * hash.[ch]: added a first version of xmlHashSize() + * valid.c: another bug fix from Gary Pennington + +Wed Feb 7 19:22:37 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * valid.c: couple of bug fixes pointed by Gary Pennington + * HTMLtree.c: #if 0 cleanup + +Tue Feb 6 14:02:56 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: started profiling XSLT, added xmlXPathNodeSetAddUnique() + which removes a time consuming check of xmlXPathNodeSetAdd() + and use it in places where we are sure to not break unicity + +Mon Feb 5 18:51:36 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: bug fixes found from XSLT + * tree.c: preserve node->name special values when copying nodes. + * parserInternals.[ch] parser.[ch] SAX.c : added a mode where + external subset are fetched when available but without full + validation. Added xmlLoadExtDtdDefaultValue, need a function. + * HTMLtree.c: add support for xmlStringTextNoenc for XSLt HTML + output with encoding disabled. + +Sat Feb 3 09:50:29 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmliO.c: Harry Blundell pointed out that xmlCheckFilename + xmlCheckFilename should not be called from xmlFileOpenW + and xmlGzfileOpenW + +Fri Feb 2 18:04:35 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * uri.c: rewrite of xmlNormalizeURIPath from Paul D. Smith + * test/URI/smith.uri result/URI/smith.uri Makefile.am: + added the new tests for URI normalization + * testURI.c: fixed stoopid bugs + * result/VC/OneID3 result/VC/UniqueElementTypeDeclaration: + the URI in the error messages are now properly normalized + +Fri Feb 2 09:18:53 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * uri.c: applied Marc Sanfacon's patch for xmlNormalizeURIPath + +Thu Feb 1 05:28:55 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed a number of problems in XPATH_XSLT_TREE processing + +Wed Jan 31 21:45:37 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed mod operator + +Wed Jan 31 16:50:42 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c: fixed xmlStrcat doc + * tree.c: 2 fixes form Anders Carlson for copying nodes and + trees. + +Wed Jan 31 14:19:16 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c result/XPath/tests/chaptersbase + result/XPath/tests/simplebase: fixed XPath node() + * tree.c: small fix in xmlNewNs() + * Makefile.am: removed extraneous xml2Conf.sh rule + +Sun Jan 28 08:37:03 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am configure.in libxml.spec.in example/Makefile.am: + Changed the library name, in order to get libxml-devel and + libxml2-devel to coexist on a single system + * xml-config.1 xml-config.in xmlConf.sh.in: renamed + * xml2-config.1 xml2-config.in xml2Conf.sh.in: new files + +Sat Jan 27 19:58:22 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am configure.in libxml-2.0.pc.in: started working on getting + libxml2-devel installable in // as libxml-devel. + +Sat Jan 27 18:49:02 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/Makefile.am: fixed make rebuild in doc + * doc/html/*.html: rebuilt the docs + +Fri Jan 26 10:30:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: patch from Bjorn Reese on xmlBufferCCat + +Thu Jan 25 19:22:25 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am doc/Makefile.am libxml.spec.in: painful work to get + the HTML doc to go into the -devel RPM ... + * aclocal.m4 config.h.in: some updates due to auto* magic + +Thu Jan 25 19:11:49 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.h: added a hook in the context structure allowing to + link to extra support, needed for XSLT + +Thu Jan 25 13:34:11 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.[ch] xpointer.c: added xmlXPathCmpNodes, changed + xmlXPtrCmpPoints to use it. + * propagated the following patch from Alejandro Forero + * include/win32config.h xmlIO.c: applied further suggestions + from Igor Zlatkovic <igorz@dialup.nacamar.de> and cleanup + * example/gjobread.c: fixed warnings, now that it builds + +Wed Jan 24 20:27:28 COT 2001 Alejandro Forero <bachue@bachue.com> + + * xmlIO.c (xmlFileOpen, xmlFileOpenW): Removed unnecesary checks. + + * xmlIO.c (xmlCheckFilename): Function added to know whether a given + filename points to a valid file (not a directory). + * xmlIO.c (xmlFileOpen, xmlFileOpenW, xmlGzfileOpen, xmlGzfileOpenW): + Added calls to xmlCheckFilenameDir. + + * xmlIO.c (xmlGzfileOpen, xmlGzfileOpenW, xmlFdOpen, xmlFdOpenW): Pass + `path' (rather than `filename') as the parameter to gzopen and open. + +Tue Jan 23 16:26:30 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: fixed a problem with EXTRA_DIST + +Mon Jan 22 23:42:17 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am example/Makefile.am: finally found the trick + to build the example, i.e. add "." in SUBDIRS before example + in the list <grin/> + +Mon Jan 22 16:30:37 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * doc/xml.html: updated with an XSLT section, removed pointer to + W3C CVS base. + +Mon Jan 22 11:43:21 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: when copying a XSLT tree object teh tree need to be copied + too, and deallocation need to occur the same way. + +Mon Jan 22 10:35:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpathInternals.h xpath.[ch] debugXML.c: added the XPATH_XSLT_TREE + type correponding to an XSLT result tree fragment. Share most + of the data format with node set, as well as operators. + * HTMLtree.c: added a newline at the end of the doctype output + whe this one is not present initially. + * tree.c: make sure taht the parent and doc pointers are properly + set when copying attributes (lists). + +Sun Jan 21 10:47:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * htmlTree.[ch] xmlIO.h: exported htmlDocContentDumpOutput + +Fri Jan 19 18:15:50 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: seems I finally killed that ugly path evaluation + context bug (tagged 9999 in case is is wrong) + +Fri Jan 19 06:30:38 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.[ch] xpathInternals.h: added xmlXPathRegisterVariableLookup() + for XSLT + +Thu Jan 18 16:19:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: Gary Pennington <Gary.Pennington@uk.sun.com> fix + for xmlGzfileOpen() bug + +Thu Jan 18 13:11:50 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: removed an error found by XSLT usage + * tree.c parserInternals.h: use a predefined static string + for text and comment nodes, avoid freeing them in xmlFreeNode, + exported the string name in parserInternals.h and added + another value to disable encoding at output (for XSLT), + gain memory, time. + +Wed Jan 17 09:15:16 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * win32/README.MSDev win32/libxml2/libxml2_a.dsp + win32/libxml2/libxml2_so.dsp: new makefiles and update + provided by Igor Zlatkovic <igor@stud.fh-frankfurt.de> + +Tue Jan 16 18:24:46 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c : xmlSaveFile, xmlSaveFileEnc, applied patch from + Gary Pennington + +Mon Jan 15 20:24:18 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xpath.c: fixed the comaprision of values and nodelists, + need to compare nodelist still ... + * debugXML.c: avoided a possible core dump + * HTMLparser.c: cleanup + * nanohttp.c: contributed fix. + * tree.c: fixes in properties handling added xmlSetNsProp + needed by libxslt + * xpathInternals.h: exported xmlXPathBooleanFunction, added a + comment + * TODO: updated + +Sat Jan 6 22:05:09 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * parser.c parserInternals.c: applied Bjorn Reese optimization + patch + +Sat Jan 6 19:13:27 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * Makefile.am: applied patch fro make check from Martin Vidner + +Thu Jan 4 19:07:49 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * configure.in: preparing 2.2.11 + * doc/html/*: rebuild the HTML files + * doc/xml.html : updated + +Thu Jan 4 14:09:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * tree.c: fixed a stupid bug + * valid.c: applied "Paul D. Smith" <pausmith@nortelnetworks.com> + patches related to validation of an XInclude processing result + * TODO: updated + +Thu Jan 4 11:46:40 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * encoding.c xmlIO.c: Fixing the problem reported by Marc Sanfacon + on large files + +Wed Jan 3 21:51:13 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmlIO.c: fixed xmlParserInputBufferCreateMem doc + +Wed Jan 3 18:56:00 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * HTMLparser.c: htmlCheckParagraph to check htmlOmittedDefaultValue, + reported by Jonas Borgström + * nanohttp.c: Applied Bjorn Reese' IPV6 first patch + +Wed Jan 3 16:19:39 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * testXPath.c xpath.c: fixing the XPath union expressions problem + reported by Martin Vidner <martin@artax.karlin.mff.cuni.cz> + +Wed Jan 3 14:22:33 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr> + + * xmllint.c: Made is so if the file name is "-" is will read form + standard input. Sven Heinicke <sven@zen.org> + * tree.c: fixed a problem when growing buffer + * tree.h: fixed the comment of the node types following andersca + comment + * TODO: updated + +Wed Dec 27 12:35:49 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.[ch]: added a way to avoid adding automatically + omitted tags. htmlHandleOmittedElem() allows to change the + default handling. + * tree.[ch] xmllint.c: added xmlDocDumpFormatMemory() and + xmlDocDumpFormatMemoryEnc(), uses memory functions for output + of xmllint too when using --memory flag, added a memory test + suite at the Makefile level. + * xpathInternals.h xpath.[ch] xpointer.c: fixed problems + with namespace use when encountering QNames in XPath evalation, + added xmlns() scheme in XPointer. + * nanoftp.c : incorporated a fix + * parser.c xmlIO.c: fixed problems raised with encoding when using + the memory I/O + * parserInternals.c: closed bug 25934 reported by + torsten.landschoff@innominate.de + * TODO: updated + +Sat Nov 25 11:46:27 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in doc/html/* doc/xml.html: made a 2.2.9 release + on a non-updated tree :-(, made a 2.2.10 release to correct the + situation + +Sat Nov 25 10:41:37 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.c parser.[ch] tree.[ch] xmlIO.[ch] xmllint.c xpath.c + parserInternals.h vms/build_libxml.com vms/config.vms Makefile.am: + integrated a set of OpenVMS changes from Howard Taylor + <Howard.Taylor@pacoast.com> + +Sat Nov 25 01:21:01 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] xmlIO.c: added xmlDocDumpMemoryEnc() from John Kroll + * error.c: applied fix suggested by "Leo Davidson" <leo@ox.compsoc.net> + +Sat Nov 25 00:24:49 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: some fixes on auto-open of html/head/body + * encoding.c: fixed a compilation error on some gcc env + * xpath.c xpointer.[ch] xpathInternals.h: improved the + XPointer implementation + * test/XPath/xptr/strpoint test/XPath/xptr/strrange3: added + related XPointer tests and associated results + +Fri Nov 24 14:01:44 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xmldtd.html doc/xml.html: following a short step by step + guidance on IRC to help maciej with DTDs I started a small + page on the subject. + +Fri Nov 17 17:28:06 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: fixed handling of broken charrefs + * xmlmemory.h libxml2.dsp include/win32config.h: reporting Windows + patches + +Mon Nov 13 19:17:20 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html doc/html/* : rebuilt the docs after adding + xinclude and updated page for 2.2.7 and 2.2.8 + * configure.in: releasing 2.2.8 + +Mon Nov 13 12:39:38 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch] parserInternals.c: applied the conditional + section processing fix from Jonathan P Springer + <jonathan.springer2@gte.net> + * xmlversion.h.in win32/libxml2/libxml2.dsp : Updated MS + project file, fixed iconv default non support + * xpath.c: fixed the problem of evaluating relative expressions + when a node context is provided. + +Sun Nov 12 16:31:19 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c: fixed gcc 2.95 new warnings + * SAX.c: fixed a stupid bug + * tree.c: fixed a formatting problem when round-tripping + from/to memory + * xinclude.c: chased memleak, fixed a base problem + * xpointer.c: added xmlXPtrBuildRangeNodeList(), finished ? + xmlXPtrBuildNodeList() + * TODO: updated + * Makefile.am test/XInclude/docs test/XInclude/ents result/XInclude: + adding a first small set of regression tests for XInclude + +Tue Nov 7 15:11:34 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.[ch]: applied Wayne Davison patches to access + the WWW-Authorization header. + * parser.c: Closed Bug#30847: Problems when switching encoding + in short files by applying Simon Berg's patch. + * valid.c: fixed a validation problem + * hash.c parser.h parserInternals.h testHTML.c testSAX.c tree.h + xmlerror.h xmlmemory.h xmlversion.h.in: applied a DLL patch from + Wayne Davison + * xpointer.[ch]: added first version of xmlXPtrBuildNodeList() + need to be extended to non full nodes selections. + * xinclude.c: starts to work decently + +Mon Nov 6 17:22:46 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] xinclude.[ch] xmllint.c configure.in valid.c + debugXML.c xmlversion.h.in: Started adding XInclude support, + this is a new xmllint option + * tree.c xpath.c: applied TOM patches for XPath + * xpointer.c: fixed a couple of errors. + * uri.c: added an escaping function needed for xinclude + * testXPath.c hash.c HTMLtree.c: minor cleanups raised by + new warning from RH70 gcc's version + +Tue Oct 31 14:14:13 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: fixed loop on invalid char in scripts + * parser.c: update to description of xmlIOParseDTD() + * libxml.m4 xmlversion.h.in: changes contributed by + Michael Schmeing <m.schmeing@internet-factory.de> + * configure.in: preparing for 2.2.7 + * Makefile.am: trying to avoid config.h and acconfig.h + being included in the distrib + * configure.in: released 2.2.7 + +Mon Oct 30 17:08:10 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] debugXML.c parserInternals.c xpath.c: Deprecated Pi's + like namespaces for good. Unified xmlNs and xmlNode somewhat. + +Mon Oct 30 16:26:49 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch]: added xmlIOParseDTD() + * xpointer.c: added support for the 2 extra parameters of + string-range, fixed a stoopid error when '0' was present + in XPointer expressions + * test/XPath/xptr/strrange2 result/XPath/xptr/strrange2: added + testsuite for the above + +Mon Oct 30 10:26:43 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * libxml.spec.in: improved package descriptions + +Sun Oct 29 19:03:11 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c xpathInternals.h: applied a large cleaning patch + from TOM <ptittom@free.fr>, it also add namespace support + for function and variables registration. + +Sun Oct 29 18:51:46 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c: Wayne Davison's patch fixing xmlBuildURI() + * Makefile.mingw: Wayne Davison's update adding hash.c + +Sun Oct 29 18:38:12 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c: fixed the root evaluation problems + * HTMLparser.c result/HTML/doc3.htm: fixed the problem of non + ignorable spaces with <b> <bold> <em> + * tree.c: fixed a loop in xmlSearchNsByHref() + +Fri Oct 27 18:57:32 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c: applied another XPath patch from TOM + * xpath.c include/makefile.am: applied another patch from + china@thewrittenword.com (cleanup on IRIX). + +Fri Oct 27 13:45:28 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xml-config.1: received a fixed version from Fredrik Hallenberg + <hallon@lysator.liu.se> + +Thu Oct 26 16:05:25 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c textXPath.c xpathInternals.h: applied TOM <ptittom@free.fr> + cleanup patch for XPath + +Wed Oct 25 21:31:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * patched to redirrect all "out of context" error messages to + a reconfigurable routine. The changes are: + * xmlerror.h : added the export of an error context type (void *) + an error handler type xmlGenericErrorFunc there is an interface + xmlSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler); + to reset the error handling routine and its argument + (by default it's equivalent to respectively fprintf and stderr. + * all the c files: all wild accesses to stderr or stdout within + the library have been replaced to calls to the handler. + +Wed Oct 25 15:27:19 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: release 2.2.6 + * xpath.[ch] xpointer.c xpathInternals.h: added xpathInternals.h + exporting the inner functions of xpath for extension modules + * doc/*: updated and rebuilt the doc + +Wed Oct 25 12:48:55 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.c : applied Wayne HTTP cleanup patch + * tree.[ch]: applied TOM <ptittom@free.fr> for xmlNodeSetBase() + and xmlNodeSetSpacePreserve() + +Wed Oct 25 12:11:03 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c: closing bug #29260 + +Tue Oct 24 18:49:34 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * hash.[ch] debugXML.c: expanded/enhanced the API, added + multikey tuples, made hash structure opaque + * valid.[ch]: moved elements, attributes, notations decalarations + as well as ID and refs to hash tables. + * entities.c: hash cleanup + * xmlmemory.c: fixed a dump problem in debug mode + * include/Makefile.am: problem passing in DESTDIR= values patch + from Marc Christensen <marc@calderasystems.com> + * nanohttp.c: removed debugging remains + * HTMLparser.c: the bogus tag should be ignored (Wayne) + * HTMLparser.c parser.c: fixing a number of problems with the + macros in the *parser.c files (Wayne). + * HTMLparser.c: close the previous option when opening a new one + (Marc Sanfacon). + * result/HTML/*: updated the HTML results accordingly + +Sun Oct 22 18:39:19 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * entities.[ch] xpath.[ch] hash.[ch] debugXML.c tree.h: added/hacked + hash tables from Bjorn Reese <breese@mail1.stofanet.dk>. Switched + XPath functions and XML entities table to them. More to come... + * xmlIO.c: fixed libxml closing FILEs it didn't open. + +Sun Oct 22 13:59:50 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: coalesce adjacent text nodes + * valid.c: handling of blank nodes in DTd validation (raised + by problems with a posteriori validation). + * nanohttp.c: changing behaviour on HTTP write stuff. + * HTMLtree.c: forced body and html to be explicitely closed. + * xpath.h: exported more XPath functions. + +Sun Oct 15 22:28:32 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * Release of 2.2.5 + * xpointer.c: range() range-inside and other helper functions + * parserInternals.c: fixed perf problem raised by rolf@pointsman.de + +Sun Oct 15 16:21:27 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.c: HTML attributes need normalization too (Bjorn Reese) + * HTMLparser.[ch]: addded htmlIsScriptAttribute() + +Sun Oct 15 13:18:36 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/*: rebuilt docs preparing for 2.2.5 release, added URI + and XPointer modules + +Sun Oct 15 12:13:30 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.h: closed #25107 + +Sun Oct 15 12:06:16 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * testSAX.c: fixed problem with cdata reporting + * SAXresult/* : updated + +Sun Oct 15 12:00:24 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c test/wap.xml result/noent/wap.xml result/wap.xml: + Closed bug #27499, added to regression tests + * TODO: updated + +Sun Oct 15 01:34:37 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c HTMLtree.[ch] SAX.c testHTML.c tree.c: fixed HTML + support for SCRIPT and STYLE with help from Bjorn Reese + * test/HTML/* result/HTML/*: added simple testcase and updated + the existing ones. + +Fri Oct 13 18:24:31 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c xpointer.c: XPointer reorder of ranges start/end and + string-range for empty strings + * test/XPath/docs/str test/XPath/xptr/chaptersrange + test/XPath/xptr/strrange: augmented the XPointer testsuite + +Fri Oct 13 12:21:48 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html doc/xmlmem.html: added a module describing memory + interfaces and use, updated the main page. + +Fri Oct 13 01:23:48 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c nanohttp.c xmlIO.c: Wayne Davison Win32 patch + nanoftp code work on Windows too now + +Fri Oct 13 00:54:37 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * testXPath.c xpath.[ch]: moved some debug functions to xpath core + * xpointer.c: implemented string-range() at least a good first version + * test/XPath/docs/str test/XPath/xptr/strrange + result/XPath/xptr/strrange: the string-range() tests + +Thu Oct 12 10:02:59 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am include/Makefile.am include/win32config.h + win32/Makefile.mingw: fixed problems reported by Wayne Davison + and make distcheck + +Thu Oct 12 01:44:08 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.c: added xmlNanoHTTPTimeout(int delay), removed a bug + xmlNanoHTTPMethod on input MimeType Tony Lam <Tony.Lam@eng.sun.com> + * xpointer.c: slight extension of xmlXPtrLocationSetMerge + +Thu Oct 12 01:37:53 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * config.h.in configure.in nanoftp.c nanohttp.c xmlversion.h.in : + patch for socklen_t detection by + Albert Chin-A-Young <china@thewrittenword.com> + +Wed Oct 11 17:53:57 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c valid.c xmllint.c: Fixed a few postvalidation bugs + and added a --dtdvalid option to xmllint used to test it + +Wed Oct 11 15:01:29 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xml-config.1 Makefile.am libxml.spec.in: adding a man page for + xml-config by Fredrik Hallenberg <hallon@lysator.liu.se> + +Wed Oct 11 12:41:30 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.[ch] xpointer.[ch]: worked on XPath functions and variable + handlings (registration, lookup, cleanup) + +Wed Oct 11 01:46:44 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in Makefile.am include/makefile.am: adding XPointer + and XPtrtests target + * xpointer.[ch] : new files for XPointer support + * test/XPath/xptr result/XPath/xptr: added XPointer testsuite and + more XPath tests + +Wed Oct 11 01:23:25 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: fixed, very broken, make distcheck works again + +Wed Oct 11 02:53:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * More work toward 2.2.5, integrated a number of patches + * configure.in Makefile.am win32config.h.in: trying to cleanup + make distcheck .... huh ... + * include/Makefile.am include/win32config.h: new directory + for includes + * win32/Makefile.mingw win32/README.MSDev win32/libxml2/libxml2.dsp + updated teh makefiles and instructions for WIN32 + * xpath.c: small fixes + * test/XPath/ results/XPath: updated the testcases and results + * HTMLparser.c nanohttp.c testXPath.c: incorporated provided or + suggested patches + * valid.c: fixed an ID bug + +Mon Oct 9 14:28:56 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * moved xml-error.h to xmlerror.h: seems this allowed to bypass + the automake bug where wrong dependencies were generated. + * xpath.[ch]: worked on XPointer + +Fri Oct 6 12:58:04 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in Makefile.am: 2.2.5, ship the include in an + include/libxml subdirectory, use symlinks when using CVS + * testSAX.c: fixed small bug + * testXPath.c: changed the way testfiles are parsed + * debugXML.c: same kind of cleanup when parsing an argument expression + XPath/XPointers can have blanks embedded + * xpath.[ch]: more cleanup, reorgs for XPointer work + * parserInternals.c parser.c HTMLparser.c: fixed wrong include + * win32/README.MSDev win32/libxml2/libxml2.dsp: Windows stuff + +Thu Oct 5 18:13:15 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * debugXML.c testXPath.c xpath.[ch]: got pissed by some nastyness + in the XPath engine, rewrote large parts of it, now it's far + cleaner and in sync with the REC not an old WD. Fixed a parsing + problem in the interactive XML shell found when testing XPath. + +Wed Oct 4 15:25:53 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * debugXML.c testXPath.c xpath.[ch]: More work on XPath/Xpointer, + incorporated "(TOM)" <ptittom@free.fr> patches rebuilt the XPath + examples with the extra test + +Wed Oct 4 14:39:01 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c xmlIO.c xmlIO.h: fixed bug 26650, and improved + the global init function. + +Tue Oct 3 11:28:52 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: Doohhh, attribute name parsing was still case + sensitive ! Fixed this ... + * result/HTML/* : updated the tests results accordingly + +Mon Oct 2 23:47:32 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.[ch] debugXML.c testXPath.c: fixed the XPath evaluation + engine, should be far more stable, incorporated a new version of + preceding/following axis, need testing + * uri.c: fixed file:///c:/a/b/c problem + * test/XPath/tests/idsimple: augmented the XPath tests + +Sun Oct 1 22:33:00 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/* rebuilding docs for 2.2.4 release + +Sun Oct 1 22:16:33 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: releasing 2.2.4 + * parser.[ch]: added xmlStrEqual() + * HTMLparser.c HTMLtree.c SAX.c debugXML.c entities.c parser.c + tree.c valid.c xlink.c xpath.c: converted all !xmlStrcmp to + use xmlStrEqual instead + * TODO: updated + * added an XPath test + +Sun Oct 1 20:19:39 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: fixed htmlStartCloseIndexinitialized init + * entities.h: exported xmlInitializePredefinedEntities + * parser.[ch] : added xmlInitParser() + * parserInternals.h : had to export htmlInitAutoClose() + +Sun Oct 1 16:28:22 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.[ch] : fixed some serious XPath Predicate evaluation + problems + * Makefile.am : added XPath regression tests to normal tests + * uri.c: fixed a problem with local paths, cleanup + * parser.c: fixed a problem with large CData sections + +Sat Sep 30 16:35:54 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in xml-config.in: patch from "Ben Taylor" + <sol7x86@hotmail.com> for solaris shared libs lookup + +2000-09-30 Martin Baulig <baulig@suse.de> + + * libxml-2.0.pc.in: Provide pkg-config script. + + * configure.in: Create the libxml-2.0.pc script from the + libxml-2.0.pc.in templates. + * Makefile.am (pkgconfig_DATA): Install the libxml-2.0.pc + script in `$(libdir)/pkgconfig'. + +Mon Sep 25 16:23:41 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c parser.c tree.c tree.h: Avoiding a few warning + when compiling with MSC + +Sun Sep 24 20:32:52 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c: patch for normalize-string() substring-before(), + substring-after() and translate() functions from Bjorn Reese + <breese@mail1.stofanet.dk> + * libxml.m4 Makefile.am: added libxml.m4 from Debian ? + Fredrik Hallenberg <hallon@lysator.liu.se> + * TODO: updated + +Sun Sep 24 10:00:49 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlversion.h.in nanoftp.c nanohttp.c: traying to work out the + problem of socklen_t being undefined on a number of platforms + * debugXML.c: fixed a compilation problem when without snprintf + +Sat Sep 23 12:19:45 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c uri.c: Another patch from Wayne Davison, correcting + an URI bug and a fix for the control-character-induced infinite loop + * nanohttp.c: preventive fix for compiling on WIN32 + +Fri Sep 22 18:06:08 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlint.c: closing bug #25000 + +Fri Sep 22 14:17:53 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlIO.h tree.h: made xmlNodeDump() and xmlNodeDumpOutput() public + * parser.[ch] nanohttp.c HTMLtree.c HTMLparser.c tree.c: applied and + modified slightly Wayne Davison patch adding xmlStrcasecmp and + related function, fixing xmlStrncmp(), and associated cleanup + * result/HTML/entities.html.sax: updating result + +Tue Sep 19 14:20:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c: applied patch for URI escaping from Wayne Davison + <wayned@blorf.net> + * tree.c parserInternals.c HTMLparser.c: memset checks patches + from Denis Barbier <barbier@imacs.polytechnique.fr> + * HTMLparser.c: UTF8 characters in HTML tag-attribute values + patch from Wayne Davison + +Sun Sep 17 18:37:03 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html : updated with new releases, adding "how to help" + +Sun Sep 17 17:58:37 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.c debugXML.c parser.c parserInternals.c tree.c valid.c xpath.c: + removed a few warnings in pedantic mode ... + * parserInternals.c parser.c: moved encoding switching function + to parserInternals.c + * configure.in, doc/Makefile.am libxml.spec.in: released 2.2.3 + +Sat Sep 16 20:12:41 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c parser.c: set ctxt->errNo before calling the + error or warning handlers + +Wed Sep 13 22:03:18 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parserInternals.c parserInternals.h parser.c Makefile.am: + created a new module parserInternals.c, moved most of the + code shared by the various parsers there, as well as + deprecated code from parser.c. More cleanup of parser.c + * uri.c: fixed a problem when URI is NULL + * valid.c: speedup when looking for an attribute declaration + +Sun Sep 10 17:53:48 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c tree.c SAX.c parser.c entities.c debugXML.c: finished + the cleanup of the computation of URI references when seeking + external entities. The URI reference string and the resulting + URI are both stored now. + * parser.c HTMLparser.c valid.c nanoftp.c nanohttp.c xpath.c: + large s(n)printf checks and cleanup from Denis Barbier + <barbier@imacs.polytechnique.fr> + * xmlversion.h.in tree.h: couple of SGML declarations for a + possible docbook module. + * result/VC/ : a couple of test output changed due to the change + of the entities URI + +Sun Sep 10 15:59:58 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.h: added a _private field for linking user's data + +Sun Sep 10 15:14:43 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c parserInternals.h: demacroified most of the IS_XXX + the gain in size is significant so ... + +Fri Sep 8 20:48:29 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * entities.c: cases where looking up entities with doc==NULL + covered + +Tue Sep 5 12:41:15 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c: applied Wayne Davison patch + * Makefile.in test/URI/uri.data result/URI/uri.data: updated URI tests + +Mon Sep 4 13:01:45 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c testUri.c: applied Wayne Davison patches + * test/URI/uri.data result/URI/uri.data: first set of tests/results + * Makefile.in: added URItest and included thenin "make tests" + +Sun Sep 3 19:19:29 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlversion.h.in: closed bug 22941 + +Thu Aug 31 16:55:55 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xmlio.html: added doc and example for entity loader + redefinition. + +Thu Aug 31 14:59:28 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xmlio.html doc/xml.html: added a doc on the I/O mechanism + used by libxml + +Tue Aug 29 20:22:53 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: Fixed bug on invalid ontent characters and when using + push. + * xmllint.c: fixed xmllint endling of errors in push mode + +Tue Aug 29 11:24:48 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c testHTML.c: applied two new patches from + Wayne Davison <wayned@users.sourceforge.net> + * result/HTML/*.sax: regenerated HTML SAX output + * parser.c: more cleanup. + +Mon Aug 28 11:58:12 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.[ch] testHTML.c: applied the second set of + patches from Wayne Davison <wayned@users.sourceforge.net>, + adding htmlEncodeEntities() + * HTMLparser.c: fixed an ignorable white space detection bug + occuring when parsing with SAX only + * result/HTML/*.sax: updated since the output is now HTML + encoded... + +Mon Aug 28 00:38:31 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.[ch]: applied some of Wayne Davison + <wayned@users.sourceforge.net> patches + +Sun Aug 27 22:14:01 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.c tree.c debugXML.c: fixed bogus behaviour when an + undeclared namespace prefix was used, added a warning. + Cleaned up support w.r.t. entities, spilling out a warning + and being pedantic on lookups. + * test/warning/ent9 : added testcase for previous example. + * TODO: updated + * parserInternals.h parser.c: changed the way names are parsed + now allow infinite size and decrease penalty for normal use + * parser.c: Started a big cleanup/check of the parser code, + fixed some of the most tortuous entity code, spotted code + unused anymore + * test/*: added tests for very long names and related nasty + things. + +Sat Aug 26 23:31:04 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/encoding.html: added encoding aliases doc + * doc/xml.html: updates + * encoding.[ch]: added EncodingAliases functions + * entities.[ch] valid.[ch] debugXML.c: removed two serious + bottleneck affecting large DTDs like Docbook + * parser.[ch] xmllint.c: added a pedantic option, will be + useful + * SAX.c: redefinition of entities is reported in pedantic mode + * testHTML.c: uninitialized warning from gcc + * uri.c: fixed a couple of bugs + * TODO: added issue raised by Michael + +Wed Aug 23 01:50:51 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/encoding.html: propagated Martin Duerst suggestions + +Wed Aug 23 00:23:41 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: Fixed Bug#21552: libxml fails to decode & + * uri.c testUri.c patches, by Marc Sanfacon (1 left) + * parser.c HTMLparser.c: HTML/encoding push problems reportedi + by Wayne Davison + +Sun Aug 20 17:03:38 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c nanohttp.c: small cleanup + * TODO: updated + +Sat Aug 19 22:57:02 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * added an old VC testcase and updated title.xml entity + +Sat Aug 19 21:02:08 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c SAX.c tree.c HTMLtree.h result/HTML/*: work + done on auto-opening of <p> tags and cleanup of SAX output + +Sat Aug 19 18:45:40 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * libxml.4 xmllint.1 Makefile.am libxml.spec.in: added man pages + +Sat Aug 19 18:38:53 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html libxml.* structure.*: updated the doc a bit + +Thu Aug 17 15:50:00 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * testSAX.c testHTML.c result/HTML/: cleanup of the output + of SAX tests + +Mon Aug 14 13:56:33 EDT 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * Patch from Albert Chin-A-Young <china@thewrittenword.com>: + * xmllint.c: workaround a MAP_FAILEd definition bug in DU-4.0 + +Mon Aug 14 11:10:20 EDT 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * Patch from Dave Yearke <yearke@eng.buffalo.edu>: + * testHTML.c: fix core dump on Solaris 2.x systems + * HTMLparser.c: fix segfault if ctxt->sax->characters() is NULL + * result/HTML/*.sax: previous bug fix lead to new results + +Mon Aug 14 10:26:09 EDT 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * Patch from Albert Chin-A-Young <china@thewrittenword.com>: + * configure.in: added --with-readline=DIR to accept alternate + path for readline include/library + * configure.in: added AM_C_PROTOTYPES to add -Aa -D_HPUX_SOURCE + for ANSI under HP-UX + * config.in: Removed @LIBS@ from xml-config because @XML_LIBS@ + includes @LIBS@ + +Sat Aug 12 23:19:42 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/* : rebuilt the docs + * getting ready for 2.2.2 release + +Sat Aug 12 16:42:37 EDT 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch]: added xmlGetFeaturesList() xmlGetFeature() + and xmlAddFeature() + * tree.[ch]: added xmlAddChildList() + * xmllint.c: MAP_FAILED macro test + * parser.h: added xmlParseCtxtExternalEntity() + * valid.c: applied bug fixes removed warning + * tree.c: added CDATA block to elements content + * testSAX.c: cleanup of output + * testHTML.c: added SAX testing + * encoding.c: better error recovery + * SAX.c, parser.c: fixed one of the external entity processing + of the OASis testsuite + * Makefile.am: added HTML SAX regression tests + * configure.in: bumped to 2.2.2 + * test/HTML/ result/HTML: added a few of HTML tests, and added the + SAX results + +Fri Aug 4 11:21:50 PDT 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: patch for HP compiler + +2000-08-04 Sven Heinicke <sven@zen.org> + + * xmllint.c: Was coredumping sometimes when the file given didn't + exist. + +Sat Jul 22 05:59:05 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c xmlIO.[ch]: fixed the problem of encoding support + + when using in memory parsing. Need some cleanup. + * xmllint.c configure.in: added a --memory flag to test memory + parsing + +Fri Jul 21 17:09:57 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.c: fixed socklen_t replacement to unsigned int + * parser.c: fixed a space handdling missing at the end of + production 28 DOCTYPE. + * xmlmemory.c: fixed a stupid bug on the routine to override + allocation functions + * TODO: updated + +Fri Jul 14 17:01:14 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/ regenerated the docs + +Fri Jul 14 16:12:20 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/encoding.html doc/xml.html: added I18N doc + * encoding.[ch] HTMLtree.[ch] parser.c HTMLparser.c: I18N encoding + improvements, both parser and filters, added ASCII & HTML, + fixed the ISO-Latin-1 one + * xmllint.c testHTML.c: added/made visible --encode + * debugXML.c : cleanup + * most .c files: applied patches due to warning on Windows and + when using Sun Pro cc compiler + * xpath.c : cleanup memleaks + * nanoftp.c : added a TESTING preprocessor flag for standalong + compile so that people can report bugs more easilly + * nanohttp.c : ditched socklen_t which was a portability mess + and replaced it with unsigned int. + * tree.[ch]: added xmlHasProp() + * TODO: updated + * test/ : added more test for entities, NS, encoding, HTML, wap + * configure.in: preparing for 2.2.0 release + +Mon Jul 10 16:17:18 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c: fixed the way the control connection is handled + * libxml.spec.in: fixed the dependencies and cleanup + +Mon Jul 3 14:37:07 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html: changed the xmlsoft.org structure, updated the + examples w.r.t. root and childs + +Sun Jul 2 20:51:43 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * libxml.spec.in: fixed bug #7419, dependencies fouled for libxml-devel + +Sun Jul 2 09:52:45 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: Work on character encoding support for the HTML parser + * HTMLparser.c: Fixed some autoopen/autoclose probs for the HTML parser + * encoding.c: Fixed a potential memleak in the encoding stuff + +Sat Jul 1 13:44:22 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/FAQ.html doc/Makefile.am : added a FAQ + +Fri Jun 30 20:29:08 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c HTMLtree.c SAX.c valid.c tree.h : more cleanup + of the HTML parser to force it to not bypass SAX + +Fri Jun 30 11:19:59 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * win32config.h.in: updated + * xmlversion.h.in: crap forgot to update this, this mean 2.1.0 + lacks iconv support :-( need to release 2.1.1 + * configure.in: release 2.1.1 + * HTMLparser: fixed bug #14784 + * xpath.c HTMLparser.c encoding.c parser.c: fix warning raised + by Windows compiler + * HTMLparser.c SAX.c HTMLtree.h tree.h: create HTML document in + the SAX startDocument() callback. + * TODO: updated + +Thu Jun 29 12:06:48 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * added xmlStopParser() + +Wed Jun 28 23:10:26 MEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: 2.1.0 prerelease + * Large resync between W3C and Gnome tree + * nanoftp, nanohttp.c: fixed stalled connections probs + * HTMLtree.c SAX.c : support for attribute without values in + HTML for andersca + * valid.c: Fixed most validation + namespace problems + * HTMLparser.c: start document callback for andersca + * debugXML.c xpath.c: lots of XPath fixups from Picdar Technology + * parser.h, SAX.c: serious speed improvement for large + CDATA blocks + * encoding.[ch] xmlIO.[ch]: Improved seriously saving to + different encoding + * example/Makefile.am example/gjobread.c tree.h: work on + libxml1 libxml2 convergence. + * config.h.in parser.c xmllint.c: added xmlCheckVersion() + and the LIBXML_TEST_VERSION macro + +Fri Jun 23 22:26:07 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html: various patches and improvements typo fixed by + Felix Natter + * doc/libxml-doc.el: Emacs module to lookup the libxml documentation + from Felix Natter <fnatter@gmx.net> + +Sat May 6 10:09:45 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/upgrade.html: updated with instructions for support of both + libxml-1.x and libxml-2.x + * doc/gjobread.c : applied Todd Dukes <tdukes@ibmoto.com> patch + for 2.x support and also fixed includes + +Wed May 3 14:21:25 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * encoding.[ch], xmlIO.[ch], parser.c, configure.in : revamped + the encoding support, added iconv support, so now libxml if + compiled with iconv automatically support japanese encodings + among others. Work based on initial patch from Yuan-Chen Cheng + I may have broken binary compat in the encoding handler + registration scheme, but that was so utterly broken I don't + expect anybody to have used this feature until now. + * parserInternals.h: fixup on the CHAR range macro + * xml-error.h, parser.c: catch URL/URI errors using the uri.c + code. + * tree.[ch]: added xmlBufferGrow(), was needed for iconv + * uri.c: added xmlParseURI() I can't believe I forgot to + implement this one in 2.0 !!! + * SAX.c: moved doc->encoding update in the endDocument() call. + * TODO: updated. + +Mon Apr 24 13:30:13 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.h: removed extraneous xmlRemoveProp definition + * TODO: added item about --disable-corba configure switch + * tree.c parser.c: fixed problems for xmlCopyDoc and postvalidation + * nanoftp.c: fixed include problems giving troubles on AIX and + slowlaris + * xmlIO.[ch] valid.h tree.[ch] xlink.c xmlmemory.c uri.c + parser.c nanoftp.c nanohttp.c SAX.c testSAX.c : + comment and headers changes to lower gtk-doc number of warnings + * doc/html/*: rebuilt docs + +Sun Apr 16 11:23:29 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * HACKING: documented the tag for 1.x and instructions + +Wed Apr 12 15:47:22 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlIO.[ch] parser.[ch]: More interfaces for new I/O functions + xmlNewIOInputStream, xmlParserInputBufferCreateIO, + xmlCreateIOParserCtxt + * parser.c parserInternals.h: speedup of IS_CHAR like macros, + significant overall improvement + * xmllint.c: added I/O test to xmllint + * testSAX.c: added a speed test + * doc/* : updated/regenerated + +Sat Apr 8 14:54:54 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.c uri.h parserInternals.h: cosmetic changes from + "Timur I. Bakeyev" <timur@bat.ru>, including making + xmlCreateURI() public + +Fri Apr 7 18:35:02 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlIO.[ch] parser.c: cleane up the xmlParserInputBuffer mess + and the code at the same time. Added a clean mechanism for + overload or added input methods: xmlRegisterInputCallbacks() + * tree.c: fixed xmlPrevSibling and xmlNextSibling per + Christophe Le Gal (Christophe.Le-Gal@imag.fr) input + * TODO: updated + * doc/* : updated/regenerated + * doc/Makefile.am: tweaks to avoid problem with libxml link in the + source dir + +Wed Apr 5 21:11:35 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * testURI.c: yet another forgotten commit, I should get some sleep ! + +Wed Apr 5 20:36:46 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmllint.c: forgot to commit this too ? + +Wed Apr 5 16:22:44 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlversion.h.in : forgot to commit this previously + +Mon Apr 3 21:47:10 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: preparing libxml-2.0.0 version looks Ok so far + * README TODO: updated for release + * uri.c uri.h: added authority parsing/saving + * uri.c testURI.c Makefile.am: moved the testing code to testURI.c + * xmlversion.h.in configure.in nanoftp.[ch] nanohttp.[ch] encoding.h + debugXML.[ch] xpath.[ch] xmlIO.c tester.c testXPath.c testHTML.c + tree.c HTMLtree.c HTMLparser.c tree.c tree.h parser.c + Makefile.am : added compile-time customization of libxml + --with-ftp --with-http --with-html --with-xpath --with-debug + --with-mem-debug + * *.[ch] autoconf.sh : moved to an absolute adressing of includes : + #include <libxml/xxx.h> I hope it won't break too much stuff + and will be manageable in the future... + * xmllint.c Makefile.am libxml.spec.in : renamed tester.c to xmllint.c + and added xmllint to the installed programs + * uri.h: added xmlFreeURI() + +Fri Mar 24 14:35:21 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * uri.c uri.h: finished the escaping handling, the base support + and the URI path normalization. Looks good just lacks the + authority content parsing code. + * Makefile.am: added instructions to generate testURI + * TODO: updated + * doc/xml.html, doc/smallfootonly.gif doc/w3c.png: updated, + added links and icons for W3C and Gnome + +Mon Mar 20 14:05:26 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlmemory.[ch] : seems I forgot to actually update the files in + the last commit :-) + * doc/xml.html doc/html/* : updated and uploaded the docs + +Mon Mar 20 12:33:51 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * test/valid/dtds/xhtml*: removed RCS infos (pain with CVS) + * TODO: updated + * xmlmemory.[ch] : added xmlMemSetup() and xmlMemGet() to override + libxml default allocation function with another set (like gmalloc/ + gfree). + * Makefile.am, uri.c, uri.h: added a set of functions to do + exact (litteraly copied from the RFC 2396 productions) parsing + and handling of URI. Will be needed for XLink, one XML WFC, + XML Base and reused in the nano[ftp/http] modules. Still work + to be done. + +Tue Mar 14 20:52:35 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, libxml.spec.in : libxml2 + * doc/* : updated the doc page, rebuilt the docs + +Tue Mar 14 19:11:29 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * all: tagged LIB_XML_1_X + * *.c *.h : updated from W3C CVS tree + * configure.in : 2.0.0-beta + * libxml.spec.in : libxml2 package nam + * result/* : new version of the tests output + +Mon Mar 6 09:34:52 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html, doc/update.html: updated docs, 1.8.7 + +Sat Mar 4 16:14:42 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/* : rebuilt the docs + * parser.c: final patch on #6766 + * valid.c: small patch on validity checks. + +Sat Mar 4 12:38:41 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/upgrade.html: instruction on how to upgrade from 1.x to 2.x + added + * parser.c: adding xmlKeepBlanksDefault() as a way to manage + compatibility w.r.t. XML spec and existing code. + +Thu Mar 2 04:45:15 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: seems a better solution to <a> </a> exists, + will try it for a while + +Thu Mar 2 02:26:13 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: tried to remove the <a> </a> generating <a/> + this is hard. Left a flag for that purpose. Fixed bug #6766 + * configure.in: prepared 1.8.7 not released, due to previous + problem + +Thu Mar 2 03:03:50 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html : applied second patch from Paul DuBois + +Tue Feb 29 23:55:13 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html : applied patch from Paul DuBois + +Thu Feb 3 16:36:39 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c HTMLparser.c: do a bit of bufferization in push mode. + +Thu Feb 3 15:59:37 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c nanohttp.c tree.c HTMLtree.[ch] debugXML.c xpath.c: Fixed + compilation warnings on various platforms. + * parser.c: Fixed #5281 validity error callbacks are now desactived + by default if not validating. + +Thu Feb 3 13:46:14 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c, win32config.h.in: patches to compile on WIN32 + +Wed Feb 2 22:51:16 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c: snprintf/sprintf patch courtesy George Katsirelos + <gkatsi@cs.toronto.edu> + +Mon Jan 31 18:58:21 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.c nanohttp.c: Fixed '#' and '?' stripping when + processing URLs + +Mon Jan 31 14:25:57 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.[ch]: cleanup, bug fixes, integration in rpmfind, added + xmlNanoFTPUpdateURL for persistent control connections. + * configure.in: 1.8.6 + +Thu Jan 27 17:52:29 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.[ch], nanoftp.[ch]: cleanup, added proxy support + * tree.[ch] : added xmlSaveNoEmptyTags + +2000-01-29 James Henstridge <james@daa.com.au> + + * nanoftp.c: include <netinet/in.h> for IPPROTO_TCP. + + * Makefile.am: added nanoftp.[ch] to the build. + +Wed Jan 26 18:14:55 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.[ch]: cleanup, comments, API + * debugXML.c : fixed a bug in the cat command + * doc/*: regenerated the docs + +Wed Jan 26 16:52:50 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanoftp.[ch] parser.c xmlIO.[ch]: added a Nano FTP implementation + * debugXML.c : fixed a bug in the cat command + * valid.c: fixing some small probs + * libxml.spec.in: get rid of the SNAP suffix + * doc/xml.html: updated the status + +Mon Jan 24 14:31:09 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * xml-config.in: xml-config --version to just return the + version number + * xpath.c: some cleanup w.r.t. axis when the current node is + an attribute. + * TODO: updated + +Tue Jan 18 18:46:06 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: prepared for libxml-1.8.5 + * doc/* recompiled the documentation + +2000-01-17 Jody Goldberg <jgoldberg@home.com> + + * configure.in : WARNING autoconf subtlety alert : + Use AC_CHECK_HEADERS rather than AC_CHECK_HEADER + when looking for zlib.h so that HAVE_ZLIB_H is defined. + * config.h.in : Have a #undef for HAVE_ZLIB_H so that it will + get defined by AC_CHECK_HEADERS. + +Mon Jan 17 17:04:12 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: fixed a hideous bug in xmlGetProp() thanks to + Rune.Djurhuus@fast.no + +Sat Jan 15 15:09:06 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * TODO: updated + * tree.c, parser.c: made sure that only memory alloc problems + and internal parser errors are allowed to write to stdout or + stderr. + +Thu Jan 13 11:49:11 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c : restored xmlNewGlobalNs since this seems used by + a lot of existing code :-(, fixed a bug in xmlNewNs + * nanohttp.c: fixed a problem with INCLUDE_WINSOCK + * HTMLparser.c, parser.c, entities.c, valid.c : removed all calls + to exit() from the library code. + * xpath.c, parser.c: removed bugs or unused code detected by + Windows compilers + * parser.c: started adding interfaces for parsing well balanced + XML fragments + * configure.in: releasing 1.8.4 + * doc/* : rebuilt the docs + +Sun Jan 9 23:03:20 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] : added xmlNewDocFragment() for DOM + * testHTML.c: uninitialized variable. + +Wed Jan 5 17:29:17 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/* : rebuild the docs + +Wed Jan 5 17:08:43 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * acconfig.h: readline and history patch + * valid.[ch]: added xmlRemoveID() and xmlRemoveRef() + * tree.c: added check and handling when possibly removing an ID + * tree.c, HTMLparser.h, HTMLtree.h: fixed entities parsing + and saving. + * test/HTML/entities.html result/HTML/entities.html* : test for + various entities reference cases + * result/HTML/* : as a result output of some testcase have + changed + * HTMLparser.c, parser.c: fixed a bug in the push mode triggered + by previous example. added xmlParseTryOrFinish(). + * xpath.h tree.h parser.h valid.h xmlIO.h xlink.h encoding.h + entities.h debugXML.h HTMLparser.h: changed the way struct are + declared to allow gtk-doc to expose those + * parser.c: closed bug #4960 + * Makefile.am configure.in: Applied patch from + Albert Chin-A-Young <china@thewrittenword.com> for better zlib + and math/socket libs detection + +Mon Jan 3 18:29:43 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, Makefile.am: link tester against readline + * doc/xml.html doc/*/*: updated and rebuilt the documentation pages + +Mon Jan 3 11:58:05 CET 2000 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch]: added xmlRemoveProp + * win32config.h.in nanohttp.c: avoid including the Windows + socket stuff in every C files + * parser.c: removed an indetermination xmLDecl/PI(xml...) in + the XmL parser(s) + * test/ns4 result/ns4 etc...: added test case for previous prob + * tree.c: xmlNewNs wasn't checking for double definition + * Makefile.in: fixed a problem with dist-hook duplicates + * parser.[hc], xmlIO.c: fixed the loading of external entities + APIs, now xmlLoadExternalEntity() is used everywhere and + setting up an app specific front-end using the + * SAX.c parser.c: some fixes, now the xhtml spec validates + with the xhtml DTD. + * error.c: fixed crashes in case of no input stream + * test/valid/[dtds/]/xhtml* : added the xhtml spec and dtds + to the validation tests and results + +Wed Dec 29 15:29:52 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.[ch] testHTML.c: added push mode for the HTML parser + too htmlCreatePushParserCtxt() and htmlParseChunk() + * parser.c: a bit of cleanup. + * SAX.c, HTMLparser.c: some attributes may not have values (contrary + to XML) removed the last mem leak known + * HTMLtree.c: output message cleanup + * xmlmemory.c: display content info about memory blocks + * result/HTML/wired.* : missing att value warning change + +Tue Dec 28 17:42:41 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/* : rebuilt the documentation + +Tue Dec 28 18:44:22 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch] parserInternals.h: Push parser for XML, + seems to work fine now + * tester.c debugXML.[ch]: Added an XML shell debug facility and + --push for push testing + * xpath.[ch] : cleaned up for Shell usage, added missing APIs + * testSAX.c: added --push + * HTMLtree.[ch] tree.[ch]: new functions for dumping parts of the + subtree + * xmlIO.[ch] : enriched API + fixes for push mode + * entities.[ch]: added the entity content length to the struct. + * xmlmemory.[ch]: new API to show the last entries for the shell + * valid.c: added required attribute testing + * SAX.c: the cdata callback now merge contiguous fragments + * HTMLparser.c: cleanup of some macros + +Wed Dec 22 12:20:53 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: fix for PIs name starting with xml + * tree.c: fixed a potential problem with || and && ops + * *.c, configure.in win32config.h.in : generate win32config.h for + those on the Other Side ! + +Tue Dec 21 17:22:17 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: fixed a stupid = vs. == bug :-( + * doc/gnome-xml.sgml: s/glade/xml/ + +Tue Dec 21 14:29:34 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, doc/xml.html : bug fix release 1.8.2 + * debugXML.h nanohttp.h xml-error.h xmlmemory.h xpath.h : + Hopefully the end of that silly C++ include problem + * tree.[ch]: Added a few functions: xmlReplaceNode, xmlAddPrevSibling, + xmlAddNextSibling, xmlNodeSetName and xmlDocSetRootElement + * HTMLparser.c HTMLparser.h HTMLtree.c: When saving HTML try to avoid + troubles with autoclosed elements when the stree shape doesn't + follow the DtD specs. Added htmlIsAutoClosed() and + htmlAutoCloseTag() + * result/HTML/*.htm*: Updated the HTML examples regression tests output + * SAX.c tree.c: fixed bug on defaulting namespaces on attributes + * debugXML.c: fixed a bug on printing default namespaces. + * HTMLtree.c: fixed a problem when outputing XML parsed docs as HTML + +Mon Dec 20 16:20:55 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * result/HTML/*.htm[l] : updated the HTML regression tests according + to the new output + * xpath.h xml-error.h valid.h tree.h parser.h entities.h SAX.h + HTMLtree.h tree.c entities.c: headers tweakings to avoid a nasty + problem due to intermix of extern "C" { ... } declarations for C++ + and recursive includes in the headers + +1999-12-20 Chris Lahey <clahey@umich.edu> + + * HTMLtree.c: Made it so that html nodes with a single child do + not insert a carriage return before or after the child node. + +Sat Dec 18 16:07:03 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, doc/xml.html : bug fix release 1.8.1 + * parser.c: fixed bug #4344 + * xpath.h xml-error.h xlink.h nanohttp.h debugXML.h SAX.h HTMLparser.h + added the glue to avoid C++ problems + * doc/* : regenerated the documentation + +Thu Dec 16 16:19:29 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: fixed a bug introduced in 1.8.0 and breaking default + namespace recognition, and Dia as a resul :-( + * encoding.c: closed bug #3950 + +Wed Dec 15 19:22:23 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * valid.c: debugging a posteriori validation, except URI expansion + stuff this should be fixed now + * parserInternals.h: fixed a bug in IS_BASECHAR reported by + Carl Nygard <cnygard@bellatlantic.net> + * tester.c: added --postvalid, cleaning of the code + * tree.[ch]: added xmlDocGetRootElement() + +Tue Dec 14 20:30:34 PST 1999 Ramiro Estrugo <ramiro@eazel.com> + + * SAX.h, tree.h : changed 'namespace' to 'nameSpace' to workaround + c++ losage. + +Sun Dec 12 13:08:15 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, doc/xml.html : bumped to 1.8.0 + * xlink.[ch], Makefile.am : added framework for link detection + * parser.h: added nbChars to parser context, needed for cleanup. + * xmlmemory.c: removed a nasty bug when out of mem + * valid.[ch]: adding namespace support for attribute decl + * tester.c: added --debugent option + * debugXML.[ch]: added xmlDebugDumpEntities() + * parser.c: cleanup, avoiding use of CUR_PTR like plague, using + buffers instead, this was really needed, validation was breaking + in strange ways due to that. Added xmlParseStringPEReference() + and other parsing from strings functions. Entities processing + modified again, but PERef are still not handled correcly but + unless you're Eve Maller you won't notice :-) + * HTMLparser.c: large changes toward reliability, and switched to + lowercase internal tags, XHTML is lowercase, so it will help + that output is closer to next version. + * doc/* : regenerated the documentation, it is now hosted at + http://xmlsoft.org/ (same bits I just bought the domain :-) + +Fri Dec 3 13:46:32 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.h, SAX.c, makefile.am: added SAX.h mostly useful for the + doc generation + * parser.c: fixed bugs #3908 and #3937 and a memory leak + in the SAX API + * doc/*: rebuilt the doc making sure everything appears in the + HTML files + +Wed Dec 1 10:27:47 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] HTMLtree.c, debugXML.c, configure.in, xml-config.in: + added the patch from Carl Nygard <cnygard@bellatlantic.net> + which allow impressive speed improvement on dataset with + large text pieces, but at the cost of broken binary + compatibility and slightly bigger memory usage. + Configure with --with-buffers to activate them, they + are protected with XML_USE_BUFFER_CONTENT define. + * entities.[ch], parser.c: added xmlCleanupPredefinedEntities(), + goal is 0 memory left allocated once parser is no more used + * testDAV.c, testHTML.c, testSAX.c, testXPath.c: make sure we + call xmlCleanupParser() and xmlMemoryDump() + +Wed Nov 24 19:00:06 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch] xmlIO.[ch] parser.c valid.c: code cleanup with -pedantic + * parser.[ch] encoding.[ch]: added memory cleanup routines + * parser.c: closing bug #3788 + * doc/*: rebuilt the doc + +Tue Nov 23 11:23:55 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch]: closing bug 3748, added xmlNewDocRawNode(), + xmlNewTextChild() and xmlSetCompressMode() behaviour. + * tester.c: added --compress option + * doc/*: rebuilt the documentation + +Fri Nov 19 18:41:28 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: bugfixing, the damn thing MUST not crash even + if given /proc/kcore as input ! + * doc/xml.html doc/*: updated and rebuilt the documentation + +Thu Nov 18 14:57:18 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: Fixed some wrongly space collapsing code due to + a misreading of the spec. + * result/*: fixed the output accordingly + +Wed Nov 17 18:28:06 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * encoding.c: bug fix and typos + * xmlIO.[ch] parser.c: first bits toward real progressive parsing + * parser.c: added attribute normalization closing bug #3597 + * test/att* result/att* SAXresult/att*: testcase for attribute + normalization + +Mon Nov 15 18:50:56 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: closing bug #3163 by adding extra flags for the + cc compiler on HP-UX + +Fri Nov 12 17:41:20 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * valid.[ch] : removed a typo and an enumerated type bug in the + xmlAddElementDecl() function + * tree.c : I changed xmlSetProp() and xmlNewProp() to do the + call to xmlEncodeEntitiesReentrant() so that the functions + New, Set and Get are at the same level. + * parser.c HTMLparser.c: extra memory allocation bug for + attributes detected by someone using libxml in embedded systems :-) + +Thu Oct 28 17:49:26 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlmemory.h: turned off mem debug :-\ + +Mon Oct 25 12:13:25 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: closed bug #2784 a one line fix, but worth pushing + a new release out + * HTMLparser.c: fixed auto-close bugs on list items, zeroing + some structures, comments before and after the + main element, and other nastyness + * HTMLtree.c tree.c: accomodate the extended HTML supported + * configure.in: pushing 1.7.4 + * test/ent8 and related outputs : added a new test for bug #2784 + * test/HTML/wired.html and related output: a nasty HTML example + * Makefile.am: improved the test scripts + * docs/* : reran the documentation extractor, updated xml.html + +Thu Oct 14 10:29:56 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c, HTMLtree.c, tree.h: completely revamped the + HTMLparser and debugged the HTML related code. HTML documents + now have their own type + * entities.c: do not dump ' for HTML output + * xmlmemory.c: improvement, breakpoint mechanism + * testHTML.c: added --sax --repeat ... + * Makefile.am: improved the HTML tests + * valid.[ch]: added xmlValidGetValidElements and + xmlValidGetPotentialChildren + * tester.c: added --insert to test the 2 new functions + * test//* result//* SAXresult//* : regression test cleanup + and extension. + * doc/html : added doc for new modules gnome-xml-xmlmemory.html and + gnome-xml-nanohttp.html + +Mon Oct 11 14:31:58 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: fixed problems with some autoclose tags + * tree.c: fixed XML output problems. + * result/* SAXresult/*: update of the tests output + +Sat Oct 9 11:02:57 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am: Arturo patch for xmlConf.sh version info + * parser.c: Tim Josling patch for single quoted items + * tester.c: Tim Josling patch for tester options usage + * tree.h: indent cleanup + +Fri Oct 8 16:35:37 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c parser.h : Fixed problems with HTML parsing + reported by Kristian Hogsberg Kristensen <hogsberg@daimi.au.dk> + +Fri Oct 8 11:37:11 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c : Raph patch for initialization of CORBA fields + * parser.c, xpath.c, ...: modification of doc comments + * xpath.c : allow spaces in xpath expressions + +Mon Sep 27 10:16:43 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlmemory.h: turning off memory debug :-( + +Sun Sep 26 13:16:54 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch] : added xmlSAXUserParseFile() and xmlSAXUserParseMemory() + better SAX interfaces. + * testSAX.c: uses the new SAX routine, avoid fetching any remote + entity. + * configure.in: 1.7.2 + +Fri Sep 24 16:01:01 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * libxml.spec.in: fixed the URL + * doc/xml.html: improved the documentation front-end + +Fri Sep 24 01:06:36 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * nanohttp.c: conditionned references to snprintf with HAVE_SNPRINTF + +Fri Sep 24 00:15:58 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * libxml.spec.in: fixed the alpha compile problem + * parser.[ch]: changed errno to errNo in the parser context :-( + * *.[ch]: changed CHAR to xmlChar to avoid problem on WIN32 + * doc/xml.html: changed CHAR to xmlChar + * doc/html/*: recompiled the documentation + * configure.in: 1.7.1 + +Wed Sep 22 11:40:31 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.h: modified the parser context struct to regain 1.4.0 + binary compatibility + * parser.c, xml-error.h: added errno ot teh context and defined + a set of errors values with update of errno + * nanohttp.[ch]: minimalist HTTP front-end for fetching remote + DTDs and entities + * *.h, *.c: complete cleanup of the use of config.h and include + protection depending on the current setup. + * overalll debugging, maintenance and bug-fixing on all modules + * updated the documentation + * ready for 1.7.0 + +Wed Sep 8 22:46:14 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c : cleanup + * SAX.c valid.c valid.h: added ID/IDREF checking + * tree.c tree.h: extended doc structure for refs + * configure.in: 1.6.2 + * parser.c: patched bug in SAX user arg call + * parserInternals.h: patched missing close in C++ wrapping + * testXPath.c xpath.c xpath.h: prepared for extensibility, + especially upcoming XPointer implementation. + * doc/xml.html: augmented, typo + +Sat Sep 4 22:48:05 CEST 1999 Timur Bakeyev <mc@bat.ru> + + * doc/Makefile.am: replaced "install -d " with "mkinstalldirs" - + not all invocations of install understand -d. + +Sat Sep 4 22:20:07 CEST 1999 Timur Bakeyev <mc@bat.ru> + + * Makefile.am: prepend all the test* calls with $(top_builddir) - + to make 'check' works, when builddir != srcdir. + +Sat Sep 4 20:25:46 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * doc/xml.html : updated the documentation + +Fri Sep 3 00:01:08 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * xmlmemory.[ch] Makefile.am :added a memory wrapper to chase + not deallocated memory blocks + * *.c : replaces all calls to malloc() free() and realloc() to + the wrapper functions/macros + * tree.c : removed memory leaks dues to calling xmlFreeNode() + instead of xmlFreeNodeList() + +Wed Sep 1 14:15:09 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c: corrected a stupid bug leading to core dump at + tree deallocation. Removed warnings indicated by + Stephane.Conversy@lri.fr + * entities.c: Fixes Yet Another Stupid Bug, entities were not + looked for in the external subset + +Mon Aug 30 13:22:26 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c valid.[ch] xpath.c: patched compilation warnings reported + on SGI by Stephane.Conversy@lri.fr + +Sun Aug 29 22:27:29 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * all .h : changed the prototype declaration indent as in gtk + * most .c : working on reducing the TODOs in the code + * most .c : cleanup though -pedantic and Insure++ + * improvements on validation ID checkings. + * tree.[ch] SAX.c: added support for namespace on attributes #2022 + * xml-config.in: closed #1810 + +Mon Aug 16 03:27:38 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.h, valid.c, valid.h: more work on validity, IDs + * xpath.c: added/fixed comparidon and equlity, added a new isinf + definition for AIX + +Sun Aug 15 21:15:17 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am libxml.spec.in: corrected missing xmlConf.sh in + the distribution due to a cut'n paste error at last commit + +Tue Aug 10 20:28:09 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: upgraded to version 1.4.0 + * valid.[ch], SAX.c, parser.[ch] parserInternals.h ... + Big update, added a large part of the validation process, + it should be usable, but some parts are missing + * xpath.c: improved the implementation w.r.t. root. + * Makefile.am: added more tests + * test and result trees: added a lot of tests + * libxml.spec.in: export libxml.so.0 and libxml.so.1 + +Tue Aug 10 11:33:41 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Added an HACKING file + +Tue Jul 27 21:43:00 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * xpath.[ch] : improvements and debug of the XPath implementation + * parser.c, HTMLparser.c : modified the parsers to be progressive + * tree.[ch] : extended the Buffer promitives + * xmlIO.[ch] : added basic I/O routines providing progressive + parsing and ready for I18N conversion plugins + * SAXresult/* : the SAX callback sequence maybe slightly different + now + * test*.c : improved/updated the tests programs + * doc/* : recompiled the docs. + +1999-07-26 Michael Meeks <michael@edenproject.org> + + * tree.h: Add const to 'content' in xmlNewDocNode, xmlNewChild + + * tree.c: Ditto. + +Thu Jul 15 16:17:16 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: upgraded to version 1.4.0 + * xpath.c, xpath.h, testXPath.c, makefile.am: added code for the XPath + draft from W3C. Will be used by XPointer, Xlink, XSL, and possibly + XML query language, see http://www.w3.org/TR/xpath for more details. + * parser.c, parser.h: added CHAR* related string functions for XPath + * HTMLparser.[ch], HTMLtree.c: a bit of cleanup on entities. + * doc/gnome-xml.sgml, doc/html/* : added XPath and HTML documentation, + rebuild the docs. + * Makefile.am, test/XPath/*, result/XPath/*: added an XPathtests target + and regression testing capabilities for XPath. + +Mon Jul 12 12:36:39 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, HTMLparser.c: applied patch from John Ellson <ellson@lucent.com> + closing bug #1646 + +Mon Jul 12 11:04:44 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am, example/Makefile.am: closed bug #1683 + +Sun Jul 11 18:16:34 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * example/Makefile.am, configure.in: added the makefile for the + gjobread example + +Sat Jul 10 14:19:11 CEST 1999 Tomasz KÅ‚oczko <kloczek@pld.org.pl> + + * doc/Makefile.am: + - fix which allow "make install DESTDIR=</install/prefix>". + +Fri Jul 9 12:10:24 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.c parser.c: applied patch from John Ellson <ellson@lucent.com> + which fixed a problem on the file reading-code. + +Wed Jul 7 09:28:43 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * HTMLparser.[ch], HTMLtree.[ch]: more work for HTML parsing and + output. + * Makefile.am, test/HTML/*, result/HTML/*: added HTMLtests targetestHTMLt + +Wed Jul 7 00:25:42 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.h : Oops removed the binary compatibility problem + * HTMLparser.[ch], HTMLtree.h : More work on the HTML parse/dump + * parser.c, HTMLparser.c: applied patches for reading from stdin + +Mon Jul 5 18:45:31 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, entities.c, valid.c: cleanup bug #1591 + * configure.in: cleanup bug #1592 + * HTMLparser.[ch], testHTML.c: started adding an HTML parser using + the same tree back-end. Hence gdome will be available for it. + * doc/Makefile.am: close bug #617 + +Sat Jun 26 23:36:38 EDT 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: alloctate a per parser context SAX interface block + +Tue Jun 22 23:46:32 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * released 1.3.0 with xmlEncodeEntities restoring old behaviour + and xmlEncodeEntitiesReentrant with the correct one :-\ + +Mon Jun 21 14:07:53 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * commit of my internal XML base changes, quite a lot of + changes, cleanups, better entities support, framework for + new I/O and charset detection and handling + * Fixed the configure/Makefile stuff to generate shared libs + with the proper version info, so we jumped on rev from + 0.0.0 to 1.2.0 ! The binary interfaces have been broken, + xmlEncodeEntities() result need to be freed now, and a string + xmlParserVersion provide the current library version. + +Tue Jun 15 14:24:19 1999 Raph Levien <raph@acm.org> + + * parser.c: fixed a buffer overrun for when you have a very long + attribute with no entities in it. + +Mon Jun 14 00:17:50 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * added example directory + * added example/gjobs.xml gjobread.c, still need a Makefile.in + +Wed Jun 2 19:40:58 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Release of libxml-1.1, nearly everything has been touched for + this. + * Added more regression tests + * Updated the documentation + +Sat May 29 13:34:42 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch]: unified the XML_NO_CORBA defines. + * parser.c encoding.[ch]: started plugging in char encoding detection + +Fri May 28 22:58:42 EDT 1999 Manish Vachharajani <mvachhar@vger.rutgers.edu> + + * tree.c: (xmlSaveFile) - removed double call of xmlContentDump. + Also freed allocated buffer. + +Wed Apr 21 22:07:35 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + * parser.[ch] tree.[ch] entities.[ch] valid.[ch] : removed the main + reentrancy problem at printing. One is left in entities.c, to + remove ASAP + * testSAX.c : added a test example showing the use of the SAX + interface if one doesn't want to build the DOM tree. + * html/gnome-xml-*.html html/index.sgml: regenerated the documentation + +Mon Apr 5 14:14:40 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch] tree.[ch] SAX.c, parserInternals.h valid.[ch]: + large revamping of the parser to use SAX callbacks + http://www.megginson.com/SAX/ (or at least a C like interface + a la Expat). It's now possible to set up your own callbacks + and the parser will not build a DOM tree. + * test/* result/*: updated the test suite, I finally removed + the old Namespace draft support (PI based). + +Fri Apr 2 17:57:32 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am: added test result to EXTRA_DIST for make tests + +Wed Mar 24 21:37:02 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, parserInternals.h: moved the chars macro definitions + to parserInternals.h + * parser.c, error.c: applied patches from "Knut Åkesson" + <ka@s2.chalmers.se> for clean compilation under MSVC 6 :-o + +Tue Mar 23 11:10:15 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * xml-config.in : applied patch to make --version work + +1999-03-05 Raja R Harinath <harinath@cs.umn.edu> + + * Makefile.am (check-local): Alias for `tests' target. This will + cause `make check' to do the right thing. + (tests): Don't run tests in srcdir. Also, replaced calls to + basename with a `sed' "equivalent". + +Fri Mar 5 07:23:53 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Renamed error.h to xml-error.h, corrected Makefile.am to list + it in the header and not the sources, updated the doc. + Thanks to Tim Mooney <mooney@dogbert.cc.ndsu.nodak.edu> for + pointing this out. + +Mon Mar 1 13:27:17 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, parser.h, parserInternals.h: memory leak hunting, + exported the inputStream routines. + * doc/html/* : updated accordingly + +Sun Feb 28 22:51:33 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, parser.h, parserInternals.h: added a few extra + internal calls to allocate and free parser contexts ... + * doc/html/* : updated accordingly + +Thu Feb 25 11:52:24 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in, Makefile.am, doc/makefile.am : General changes for + 1.0.0 release and including the generated HTML documentation. + +Thu Feb 25 09:44:52 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * makefile.am : added parserInternals.h, oops. + +Mon Feb 22 11:24:56 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parserInternals.h: added this header giving access to the parser + internal functions. + * doc/Makefile.am : added a rebuild target which rebuilds the full + set of documentations + * parser.[ch] tree.[ch] valid.[ch]: serious updates w.r.t. parsing + the internal subset. + * *.c *.h: modifications needed to generate the documentation using + gtk-doc, cleanup of functions blocks, reorganisation of struct + declarations. + +Tue Feb 16 17:27:29 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * Makefile.am, spec, doc/Makefile.am : upgrading to 0.99.8, fixing + the tar and spec file to include the beginning of the doc. + +1999-02-13 Nuno Ferreira <nmrf@rnl.ist.utl.pt> + + * doc/.cvsignore: Added this file. + +Mon Feb 8 19:27:56 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: fixed xmlGetProp to return "" when the attribute + exists, even if the node-list is NULL. + +Mon Feb 8 16:10:15 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: patched an error outputting empty attribute values. + * Makefile.am and doc/makefile.am: have been updated during the + week-end. Sorry for an empty CVS log, I got a shell problem. + +Mon Feb 1 12:10:13 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.h: cleaned up using enums instead of defines + * parser.c, valid.[ch]: more work on parsing/output of element + declarations + +Sun Jan 31 22:06:48 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * valid.[ch], tree.c, parser.c : more work toward full parsing + of XML DTDs. + * README: added informations about mailing-list and on-line + documentation + +1999-01-27 Raja R Harinath <harinath@cs.umn.edu> + + * configure.in (XML_INCLUDEDIR): Use -I not -L for includes. + +Sun Jan 17 20:06:36 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, tree.[ch] : more work toward conformance testing, + added a last element to accelerate parsing of very flat structures + started working on internal subset Element content declaration. + * valid.[ch] : first cut at adding code toward validation. + * previous changes had also small impact on most files, especially + the conformance testing using James Clark test suite. + +Sun Jan 17 14:45:06 CET 1999 Daniel Veillard <Daniel.Veillard@w3.org> + + * test/* : updated the examples, most of them were not well + formed (humm), and added rdf2. + * result/* : resulting changes in the output. + +Sun Dec 6 13:06:58 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: changed the behaviour of xmlGetProp on NULL values. + +Sat Dec 5 12:25:09 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: patched a bug in the generation of empty attributes + +Fri Nov 27 01:36:54 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * entities.[ch], tree.[ch], tester.c: added copy interfaces + for node/trees/documents/... Biggest problem is namespace + support when copying subtrees. + +Sun Nov 15 19:59:47 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, entities.c: improve entities and char ref encoding, + and cleanups of error messages. + +Fri Nov 13 13:03:10 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c, entities.c: simple bug hunting done during rpm2html and + rpmfind integration. + +Sun Nov 8 13:11:07 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch]: Added interfaces allowing to specify a SAX + handler before parsing. + +Sun Nov 8 09:39:17 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: redirrect all errors reporting through the SAX + error function + +Wed Nov 4 14:21:54 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * entities.c: rather use HAVE_SNPRINTF and not depend on glib + * libtool, tlmain ...: update of the libtool files + +1998-11-04 Miguel de Icaza <miguel@nuclecu.unam.mx> + + * entities.c: Use g_snprintf insteda of snprintf. + +Sun Nov 1 14:31:06 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * entities.c, parser.c: debug and cleanup of CharRef handling/saving. + added ent5 test for this purpose. + * parser.c, parser.h: formatting, comments and UTF-8 planning. + +Fri Oct 30 01:36:52 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: fixed? a strange error due to compression on a GWP + document. + +Thu Oct 29 00:48:45 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch]: bug fixing + * entities.[ch]: defined a specific type for predefined entities + * doc/xml.html: more documentation on the library, how to use it, + overview of the interfaces. + +Wed Oct 28 17:56:35 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.[ch]: more cleanup on the API, made the tree mor conformant. + +Tue Oct 27 17:54:00 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c: corrected a small bug + * doc/xml.html: continuing writing documentation. + +Tue Oct 27 17:54:00 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * debugXML.h debugXML.c: added debugging utilities. + * tester.c: added --debug switch. + * tree.c: patched an incorrect node->type assignment. + * parser.c: formatting, ensure that node->doc != NULL in attributes + +Tue Oct 27 01:15:39 EST 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.[ch] SAX.c tree.[ch]: large amount of changes to improve + entity support and provide an internal representation close to + DOM one (entity ref nodes, and attribute value as tree). I tried + to preserve the interface but this will surely break some apps + (I have to change rpm2html/rpmfind for example). I had to change + two interfaces, and the generated tree is somewhat different. + * doc/* : started documenting the XML library, the tree and + DOM/Corba. This is a first step. + +Sat Oct 24 14:23:51 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: Set up the fonctions comment block, boring but useful. + * parser.h, SAX.c, parser.c: now attributes are processed through + the SAX interface. The problem is that my SAX interface diverged + quite a bit from the original one, well this is not an official + spec, and translating it from Java to C is hairy anyway... + +Tue Oct 20 02:11:21 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * SAX.c, entities.c, tree.c, encoding.c, error.c: Set up the + fonctions comment block, boring but useful. + +Sun Oct 18 20:40:58 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * encoding.[ch], Makefile.am: Added the UTF-8, UTF-16 and ISO Latin 1 + conversion routines. However they are not yet used to convert the + inputs. The core will run with UTF-8. + +Sun Oct 18 15:08:19 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c : make sure that the type id is properly set-up when + a new object is allocated, needed for DOM. + +Sat Oct 17 02:43:21 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.h, tree.c: Ok, the main objects in the tree will be native + corba objects, it costs 8 bytes per Node, Attribute and Document + but it simplifies the Corba integration a lot (no extra interface + objects to allocate/free). + +Tue Oct 13 21:46:57 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.h, tree.c, parser.c: added prev and doc pointers to Node, + and changed NODEs contants for conformity with DOM Level 1 + +Wed Oct 7 23:42:46 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * added hooks to keep track of servants when creating objects + xmlDoc and xmlNode (for Corba export). + +Sun Oct 4 03:18:09 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * added xml-config script. + +Thu Oct 1 16:22:37 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * autogen.sh : applied patch from Frederic Devernay <devernay@istar.fr> + to autoupdate libtool and automake conf files. + +1998-09-30 Miguel de Icaza <miguel@nuclecu.unam.mx> + + * Makefile.am: Use '?' to separate the sed + commands as ',' is used when people pass -Wl,something. + +Thu Sep 24 15:13:29 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * tree.c, tree.h: added a per-document compression interface. + +Tue Sep 22 20:47:38 EDT 1998 + + * tree.c, tree.h: added saving with compression and added interfaces + to control the compression level (xmlGetCompressMode, + xmlSetCompressMode) and a new save to filename function (xmlSaveFile). + +Mon Sep 21 20:11:13 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * parser.c: corrected a loop for files of size 0 + +1998-08-20 Raja R Harinath <harinath@cs.umn.edu> + + * error.h: New file. Contains prototyes from `error.c'. + +Thu Aug 13 19:02:34 1998 Tom Tromey <tromey@cygnus.com> + + * Makefile.am (xmlincdir): New macro. + (xmlinc_HEADERS): Renamed from include_HEADERS. + +Thu Aug 13 00:40:14 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * applied small patch on numeric entities from + Christopher Blizzard <blizzard@appliedtheory.com> + +Wed Aug 12 23:12:58 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * New release 0.2, removed the old xml_* files so that it's + coherent with the other CVS base (W3C), far better conformance + to standard, new namespaces, decent entities support, beginning + of a SAX-like interface. Nearly nothing left intact, even the + test examples ... + +1998-07-30 Christopher Blizzard <blizzard@appliedtheory.com> + + * .cvsignore: Add .deps dir + +Sun Jul 26 17:29:52 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * xml_tree: changed the memory allocation scheme for name in xmlNewNode + +Sun Jul 26 00:17:51 EDT 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * configure.in: added test for CPP + * AUTHORS, Changelog: the original ones didn't get commited but the + glib ones instead, fixed. + * Makefile.am: corrected an error in library naming + +Fri Jul 24 16:47:14 1998 Daniel Veillard <Daniel.Veillard@w3.org> + + * integrated code developped at W3C + * changed the original Copyright + * migrated to automake + * prefixed the filenames by xml_ to avoid filename clashes + +# +# vim: set enc=utf-8 +#
diff --git a/libxml2-2.7.7/Copyright b/libxml2-2.7.7/Copyright new file mode 100644 index 0000000..417e955 --- /dev/null +++ b/libxml2-2.7.7/Copyright
@@ -0,0 +1,27 @@ +Except where otherwise noted in the source code (e.g. the files hash.c, +list.c and the trio files, which are covered by a similar licence but +with different Copyright notices) all the files are: + + Copyright (C) 1998-2003 Daniel Veillard. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Daniel Veillard shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from him. +
diff --git a/libxml2-2.7.7/DOCBparser.c b/libxml2-2.7.7/DOCBparser.c new file mode 100644 index 0000000..3573743 --- /dev/null +++ b/libxml2-2.7.7/DOCBparser.c
@@ -0,0 +1,305 @@ +/* + * DOCBparser.c : an attempt to parse SGML Docbook documents + * + * This is deprecated !!! + * Code removed with release 2.6.0 it was broken. + * The doc are expect to be migrated to XML DocBook + * + * See Copyright for the status of this software. + * + * daniel@veillard.com + */ + +#define IN_LIBXML +#include "libxml.h" +#ifdef LIBXML_DOCB_ENABLED + +#include <libxml/xmlerror.h> +#include <libxml/DOCBparser.h> + +/** + * docbEncodeEntities: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * @quoteChar: the quote character to escape (' or ") or zero. + * + * Take a block of UTF-8 chars in and try to convert it to an ASCII + * plus SGML entities block of chars out. + * + * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise + * The value of @inlen after return is the number of octets consumed + * as the return value is positive, else unpredictable. + * The value of @outlen after return is the number of octets consumed. + */ +int +docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED, + int *outlen ATTRIBUTE_UNUSED, + const unsigned char *in ATTRIBUTE_UNUSED, + int *inlen ATTRIBUTE_UNUSED, + int quoteChar ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbEncodeEntities() deprecated function reached\n"); + deprecated = 1; + } + return(-1); +} + +/** + * docbParseDocument: + * @ctxt: an SGML parser context + * + * parse an SGML document (and build a tree if using the standard SAX + * interface). + * + * Returns 0, -1 in case of error. the parser context is augmented + * as a result of the parsing. + */ + +int +docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseDocument() deprecated function reached\n"); + deprecated = 1; + } + return (xmlParseDocument(ctxt)); +} + +/** + * docbFreeParserCtxt: + * @ctxt: an SGML parser context + * + * Free all the memory used by a parser context. However the parsed + * document in ctxt->myDoc is not freed. + */ + +void +docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbFreeParserCtxt() deprecated function reached\n"); + deprecated = 1; + } + xmlFreeParserCtxt(ctxt); +} + +/** + * docbParseChunk: + * @ctxt: an XML parser context + * @chunk: an char array + * @size: the size in byte of the chunk + * @terminate: last chunk indicator + * + * Parse a Chunk of memory + * + * Returns zero if no error, the xmlParserErrors otherwise. + */ +int +docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED, + const char *chunk ATTRIBUTE_UNUSED, + int size ATTRIBUTE_UNUSED, + int terminate ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseChunk() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlParseChunk(ctxt, chunk, size, terminate)); +} + +/** + * docbCreatePushParserCtxt: + * @sax: a SAX handler + * @user_data: The user data returned on SAX callbacks + * @chunk: a pointer to an array of chars + * @size: number of chars in the array + * @filename: an optional file name or URI + * @enc: an optional encoding + * + * Create a parser context for using the DocBook SGML parser in push mode + * To allow content encoding detection, @size should be >= 4 + * The value of @filename is used for fetching external entities + * and error/warning reports. + * + * Returns the new parser context or NULL + */ +docbParserCtxtPtr +docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED, + void *user_data ATTRIBUTE_UNUSED, + const char *chunk ATTRIBUTE_UNUSED, + int size ATTRIBUTE_UNUSED, + const char *filename ATTRIBUTE_UNUSED, + xmlCharEncoding enc ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseChunk() deprecated function reached\n"); + deprecated = 1; + } + + return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename)); +} + +/** + * docbSAXParseDoc: + * @cur: a pointer to an array of xmlChar + * @encoding: a free form C string describing the SGML document encoding, or NULL + * @sax: the SAX handler block + * @userData: if using SAX, this pointer will be provided on callbacks. + * + * parse an SGML in-memory document and build a tree. + * It use the given SAX function block to handle the parsing callback. + * If sax is NULL, fallback to the default DOM tree building routines. + * + * Returns the resulting document tree + */ + +docbDocPtr +docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED, + const char *encoding ATTRIBUTE_UNUSED, + docbSAXHandlerPtr sax ATTRIBUTE_UNUSED, + void *userData ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseChunk() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlSAXParseMemoryWithData(sax, (const char *)cur, + xmlStrlen((const xmlChar *) cur), 0, userData)); +} + +/** + * docbParseDoc: + * @cur: a pointer to an array of xmlChar + * @encoding: a free form C string describing the SGML document encoding, or NULL + * + * parse an SGML in-memory document and build a tree. + * + * Returns the resulting document tree + */ + +docbDocPtr +docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED, + const char *encoding ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseChunk() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlParseDoc(cur)); +} + + +/** + * docbCreateFileParserCtxt: + * @filename: the filename + * @encoding: the SGML document encoding, or NULL + * + * Create a parser context for a file content. + * Automatic support for ZLIB/Compress compressed document is provided + * by default if found at compile-time. + * + * Returns the new parser context or NULL + */ +docbParserCtxtPtr +docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED, + const char *encoding ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbCreateFileParserCtxt() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlCreateFileParserCtxt(filename)); +} + +/** + * docbSAXParseFile: + * @filename: the filename + * @encoding: a free form C string describing the SGML document encoding, or NULL + * @sax: the SAX handler block + * @userData: if using SAX, this pointer will be provided on callbacks. + * + * parse an SGML file and build a tree. Automatic support for ZLIB/Compress + * compressed document is provided by default if found at compile-time. + * It use the given SAX function block to handle the parsing callback. + * If sax is NULL, fallback to the default DOM tree building routines. + * + * Returns the resulting document tree + */ + +docbDocPtr +docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED, + const char *encoding ATTRIBUTE_UNUSED, + docbSAXHandlerPtr sax ATTRIBUTE_UNUSED, + void *userData ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbSAXParseFile() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlSAXParseFileWithData(sax, filename, 0, userData)); +} + +/** + * docbParseFile: + * @filename: the filename + * @encoding: a free form C string describing document encoding, or NULL + * + * parse a Docbook SGML file and build a tree. Automatic support for + * ZLIB/Compress compressed document is provided by default if found + * at compile-time. + * + * Returns the resulting document tree + */ + +docbDocPtr +docbParseFile(const char *filename ATTRIBUTE_UNUSED, + const char *encoding ATTRIBUTE_UNUSED) +{ + static int deprecated = 0; + + if (!deprecated) { + xmlGenericError(xmlGenericErrorContext, + "docbParseFile() deprecated function reached\n"); + deprecated = 1; + } + + return (xmlParseFile(filename)); +} +#define bottom_DOCBparser +#include "elfgcchack.h" +#endif /* LIBXML_DOCB_ENABLED */
diff --git a/libxml2-2.7.7/HTMLparser.c b/libxml2-2.7.7/HTMLparser.c new file mode 100644 index 0000000..42dc776 --- /dev/null +++ b/libxml2-2.7.7/HTMLparser.c
@@ -0,0 +1,6939 @@ +/* + * HTMLparser.c : an HTML 4.0 non-verifying parser + * + * See Copyright for the status of this software. + * + * daniel@veillard.com + */ + +#define IN_LIBXML +#include "libxml.h" +#ifdef LIBXML_HTML_ENABLED + +#include <string.h> +#ifdef HAVE_CTYPE_H +#include <ctype.h> +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_ZLIB_H +#include <zlib.h> +#endif + +#include <libxml/xmlmemory.h> +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/parserInternals.h> +#include <libxml/xmlerror.h> +#include <libxml/HTMLparser.h> +#include <libxml/HTMLtree.h> +#include <libxml/entities.h> +#include <libxml/encoding.h> +#include <libxml/valid.h> +#include <libxml/xmlIO.h> +#include <libxml/globals.h> +#include <libxml/uri.h> + +#define HTML_MAX_NAMELEN 1000 +#define HTML_PARSER_BIG_BUFFER_SIZE 1000 +#define HTML_PARSER_BUFFER_SIZE 100 + +/* #define DEBUG */ +/* #define DEBUG_PUSH */ + +static int htmlOmittedDefaultValue = 1; + +xmlChar * htmlDecodeEntities(htmlParserCtxtPtr ctxt, int len, + xmlChar end, xmlChar end2, xmlChar end3); +static void htmlParseComment(htmlParserCtxtPtr ctxt); + +/************************************************************************ + * * + * Some factorized error routines * + * * + ************************************************************************/ + +/** + * htmlErrMemory: + * @ctxt: an HTML parser context + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +htmlErrMemory(xmlParserCtxtPtr ctxt, const char *extra) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) { + ctxt->errNo = XML_ERR_NO_MEMORY; + ctxt->instate = XML_PARSER_EOF; + ctxt->disableSAX = 1; + } + if (extra) + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, extra, + NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); + else + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, + XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, NULL, + NULL, NULL, 0, 0, "Memory allocation failed\n"); +} + +/** + * htmlParseErr: + * @ctxt: an HTML parser context + * @error: the error number + * @msg: the error message + * @str1: string infor + * @str2: string infor + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +htmlParseErr(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const xmlChar *str1, const xmlChar *str2) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_HTML, error, + XML_ERR_ERROR, NULL, 0, + (const char *) str1, (const char *) str2, + NULL, 0, 0, + msg, str1, str2); + if (ctxt != NULL) + ctxt->wellFormed = 0; +} + +/** + * htmlParseErrInt: + * @ctxt: an HTML parser context + * @error: the error number + * @msg: the error message + * @val: integer info + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +htmlParseErrInt(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, int val) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_HTML, error, + XML_ERR_ERROR, NULL, 0, NULL, NULL, + NULL, val, 0, msg, val); + if (ctxt != NULL) + ctxt->wellFormed = 0; +} + +/************************************************************************ + * * + * Parser stacks related functions and macros * + * * + ************************************************************************/ + +/** + * htmlnamePush: + * @ctxt: an HTML parser context + * @value: the element name + * + * Pushes a new element name on top of the name stack + * + * Returns 0 in case of error, the index in the stack otherwise + */ +static int +htmlnamePush(htmlParserCtxtPtr ctxt, const xmlChar * value) +{ + if ((ctxt->html < 3) && (xmlStrEqual(value, BAD_CAST "head"))) + ctxt->html = 3; + if ((ctxt->html < 10) && (xmlStrEqual(value, BAD_CAST "body"))) + ctxt->html = 10; + if (ctxt->nameNr >= ctxt->nameMax) { + ctxt->nameMax *= 2; + ctxt->nameTab = (const xmlChar * *) + xmlRealloc((xmlChar * *)ctxt->nameTab, + ctxt->nameMax * + sizeof(ctxt->nameTab[0])); + if (ctxt->nameTab == NULL) { + htmlErrMemory(ctxt, NULL); + return (0); + } + } + ctxt->nameTab[ctxt->nameNr] = value; + ctxt->name = value; + return (ctxt->nameNr++); +} +/** + * htmlnamePop: + * @ctxt: an HTML parser context + * + * Pops the top element name from the name stack + * + * Returns the name just removed + */ +static const xmlChar * +htmlnamePop(htmlParserCtxtPtr ctxt) +{ + const xmlChar *ret; + + if (ctxt->nameNr <= 0) + return (NULL); + ctxt->nameNr--; + if (ctxt->nameNr < 0) + return (NULL); + if (ctxt->nameNr > 0) + ctxt->name = ctxt->nameTab[ctxt->nameNr - 1]; + else + ctxt->name = NULL; + ret = ctxt->nameTab[ctxt->nameNr]; + ctxt->nameTab[ctxt->nameNr] = NULL; + return (ret); +} + +/** + * htmlNodeInfoPush: + * @ctxt: an HTML parser context + * @value: the node info + * + * Pushes a new element name on top of the node info stack + * + * Returns 0 in case of error, the index in the stack otherwise + */ +static int +htmlNodeInfoPush(htmlParserCtxtPtr ctxt, htmlParserNodeInfo *value) +{ + if (ctxt->nodeInfoNr >= ctxt->nodeInfoMax) { + if (ctxt->nodeInfoMax == 0) + ctxt->nodeInfoMax = 5; + ctxt->nodeInfoMax *= 2; + ctxt->nodeInfoTab = (htmlParserNodeInfo *) + xmlRealloc((htmlParserNodeInfo *)ctxt->nodeInfoTab, + ctxt->nodeInfoMax * + sizeof(ctxt->nodeInfoTab[0])); + if (ctxt->nodeInfoTab == NULL) { + htmlErrMemory(ctxt, NULL); + return (0); + } + } + ctxt->nodeInfoTab[ctxt->nodeInfoNr] = *value; + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; + return (ctxt->nodeInfoNr++); +} + +/** + * htmlNodeInfoPop: + * @ctxt: an HTML parser context + * + * Pops the top element name from the node info stack + * + * Returns 0 in case of error, the pointer to NodeInfo otherwise + */ +static htmlParserNodeInfo * +htmlNodeInfoPop(htmlParserCtxtPtr ctxt) +{ + if (ctxt->nodeInfoNr <= 0) + return (NULL); + ctxt->nodeInfoNr--; + if (ctxt->nodeInfoNr < 0) + return (NULL); + if (ctxt->nodeInfoNr > 0) + ctxt->nodeInfo = &ctxt->nodeInfoTab[ctxt->nodeInfoNr - 1]; + else + ctxt->nodeInfo = NULL; + return &ctxt->nodeInfoTab[ctxt->nodeInfoNr]; +} + +/* + * Macros for accessing the content. Those should be used only by the parser, + * and not exported. + * + * Dirty macros, i.e. one need to make assumption on the context to use them + * + * CUR_PTR return the current pointer to the xmlChar to be parsed. + * CUR returns the current xmlChar value, i.e. a 8 bit value if compiled + * in ISO-Latin or UTF-8, and the current 16 bit value if compiled + * in UNICODE mode. This should be used internally by the parser + * only to compare to ASCII values otherwise it would break when + * running with UTF-8 encoding. + * NXT(n) returns the n'th next xmlChar. Same as CUR is should be used only + * to compare on ASCII based substring. + * UPP(n) returns the n'th next xmlChar converted to uppercase. Same as CUR + * it should be used only to compare on ASCII based substring. + * SKIP(n) Skip n xmlChar, and must also be used only to skip ASCII defined + * strings without newlines within the parser. + * + * Clean macros, not dependent of an ASCII context, expect UTF-8 encoding + * + * CURRENT Returns the current char value, with the full decoding of + * UTF-8 if we are using this mode. It returns an int. + * NEXT Skip to the next character, this does the proper decoding + * in UTF-8 mode. It also pop-up unfinished entities on the fly. + * NEXTL(l) Skip the current unicode character of l xmlChars long. + * COPY(to) copy one char to *to, increment CUR_PTR and to accordingly + */ + +#define UPPER (toupper(*ctxt->input->cur)) + +#define SKIP(val) ctxt->nbChars += (val),ctxt->input->cur += (val),ctxt->input->col+=(val) + +#define NXT(val) ctxt->input->cur[(val)] + +#define UPP(val) (toupper(ctxt->input->cur[(val)])) + +#define CUR_PTR ctxt->input->cur + +#define SHRINK if ((ctxt->input->cur - ctxt->input->base > 2 * INPUT_CHUNK) && \ + (ctxt->input->end - ctxt->input->cur < 2 * INPUT_CHUNK)) \ + xmlParserInputShrink(ctxt->input) + +#define GROW if ((ctxt->progressive == 0) && \ + (ctxt->input->end - ctxt->input->cur < INPUT_CHUNK)) \ + xmlParserInputGrow(ctxt->input, INPUT_CHUNK) + +#define CURRENT ((int) (*ctxt->input->cur)) + +#define SKIP_BLANKS htmlSkipBlankChars(ctxt) + +/* Inported from XML */ + +/* #define CUR (ctxt->token ? ctxt->token : (int) (*ctxt->input->cur)) */ +#define CUR ((int) (*ctxt->input->cur)) +#define NEXT xmlNextChar(ctxt) + +#define RAW (ctxt->token ? -1 : (*ctxt->input->cur)) + + +#define NEXTL(l) do { \ + if (*(ctxt->input->cur) == '\n') { \ + ctxt->input->line++; ctxt->input->col = 1; \ + } else ctxt->input->col++; \ + ctxt->token = 0; ctxt->input->cur += l; ctxt->nbChars++; \ + } while (0) + +/************ + \ + if (*ctxt->input->cur == '%') xmlParserHandlePEReference(ctxt); \ + if (*ctxt->input->cur == '&') xmlParserHandleReference(ctxt); + ************/ + +#define CUR_CHAR(l) htmlCurrentChar(ctxt, &l) +#define CUR_SCHAR(s, l) xmlStringCurrentChar(ctxt, s, &l) + +#define COPY_BUF(l,b,i,v) \ + if (l == 1) b[i++] = (xmlChar) v; \ + else i += xmlCopyChar(l,&b[i],v) + +/** + * htmlFindEncoding: + * @the HTML parser context + * + * Ty to find and encoding in the current data available in the input + * buffer this is needed to try to switch to the proper encoding when + * one face a character error. + * That's an heuristic, since it's operating outside of parsing it could + * try to use a meta which had been commented out, that's the reason it + * should only be used in case of error, not as a default. + * + * Returns an encoding string or NULL if not found, the string need to + * be freed + */ +static xmlChar * +htmlFindEncoding(xmlParserCtxtPtr ctxt) { + const xmlChar *start, *cur, *end; + + if ((ctxt == NULL) || (ctxt->input == NULL) || + (ctxt->input->encoding != NULL) || (ctxt->input->buf == NULL) || + (ctxt->input->buf->encoder != NULL)) + return(NULL); + if ((ctxt->input->cur == NULL) || (ctxt->input->end == NULL)) + return(NULL); + + start = ctxt->input->cur; + end = ctxt->input->end; + /* we also expect the input buffer to be zero terminated */ + if (*end != 0) + return(NULL); + + cur = xmlStrcasestr(start, BAD_CAST "HTTP-EQUIV"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CONTENT"); + if (cur == NULL) + return(NULL); + cur = xmlStrcasestr(cur, BAD_CAST "CHARSET="); + if (cur == NULL) + return(NULL); + cur += 8; + start = cur; + while (((*cur >= 'A') && (*cur <= 'Z')) || + ((*cur >= 'a') && (*cur <= 'z')) || + ((*cur >= '0') && (*cur <= '9')) || + (*cur == '-') || (*cur == '_') || (*cur == ':') || (*cur == '/')) + cur++; + if (cur == start) + return(NULL); + return(xmlStrndup(start, cur - start)); +} + +/** + * htmlCurrentChar: + * @ctxt: the HTML parser context + * @len: pointer to the length of the char read + * + * The current char value, if using UTF-8 this may actually span multiple + * bytes in the input buffer. Implement the end of line normalization: + * 2.11 End-of-Line Handling + * If the encoding is unspecified, in the case we find an ISO-Latin-1 + * char, then the encoding converter is plugged in automatically. + * + * Returns the current char value and its length + */ + +static int +htmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) { + if (ctxt->instate == XML_PARSER_EOF) + return(0); + + if (ctxt->token != 0) { + *len = 0; + return(ctxt->token); + } + if (ctxt->charset == XML_CHAR_ENCODING_UTF8) { + /* + * We are supposed to handle UTF8, check it's valid + * From rfc2044: encoding of the Unicode values on UTF-8: + * + * UCS-4 range (hex.) UTF-8 octet sequence (binary) + * 0000 0000-0000 007F 0xxxxxxx + * 0000 0080-0000 07FF 110xxxxx 10xxxxxx + * 0000 0800-0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx + * + * Check for the 0x110000 limit too + */ + const unsigned char *cur = ctxt->input->cur; + unsigned char c; + unsigned int val; + + c = *cur; + if (c & 0x80) { + if (cur[1] == 0) { + xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } + if ((cur[1] & 0xc0) != 0x80) + goto encoding_error; + if ((c & 0xe0) == 0xe0) { + + if (cur[2] == 0) { + xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } + if ((cur[2] & 0xc0) != 0x80) + goto encoding_error; + if ((c & 0xf0) == 0xf0) { + if (cur[3] == 0) { + xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + cur = ctxt->input->cur; + } + if (((c & 0xf8) != 0xf0) || + ((cur[3] & 0xc0) != 0x80)) + goto encoding_error; + /* 4-byte code */ + *len = 4; + val = (cur[0] & 0x7) << 18; + val |= (cur[1] & 0x3f) << 12; + val |= (cur[2] & 0x3f) << 6; + val |= cur[3] & 0x3f; + } else { + /* 3-byte code */ + *len = 3; + val = (cur[0] & 0xf) << 12; + val |= (cur[1] & 0x3f) << 6; + val |= cur[2] & 0x3f; + } + } else { + /* 2-byte code */ + *len = 2; + val = (cur[0] & 0x1f) << 6; + val |= cur[1] & 0x3f; + } + if (!IS_CHAR(val)) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Char 0x%X out of allowed range\n", val); + } + return(val); + } else { + if ((*ctxt->input->cur == 0) && + (ctxt->input->cur < ctxt->input->end)) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Char 0x%X out of allowed range\n", 0); + *len = 1; + return(' '); + } + /* 1-byte code */ + *len = 1; + return((int) *ctxt->input->cur); + } + } + /* + * Assume it's a fixed length encoding (1) with + * a compatible encoding for the ASCII set, since + * XML constructs only use < 128 chars + */ + *len = 1; + if ((int) *ctxt->input->cur < 0x80) + return((int) *ctxt->input->cur); + + /* + * Humm this is bad, do an automatic flow conversion + */ + { + xmlChar * guess; + xmlCharEncodingHandlerPtr handler; + + guess = htmlFindEncoding(ctxt); + if (guess == NULL) { + xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1); + } else { + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = guess; + handler = xmlFindCharEncodingHandler((const char *) guess); + if (handler != NULL) { + xmlSwitchToEncoding(ctxt, handler); + } else { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "Unsupported encoding %s", guess, NULL); + } + } + ctxt->charset = XML_CHAR_ENCODING_UTF8; + } + + return(xmlCurrentChar(ctxt, len)); + +encoding_error: + /* + * If we detect an UTF8 error that probably mean that the + * input encoding didn't get properly advertized in the + * declaration header. Report the error and switch the encoding + * to ISO-Latin-1 (if you don't like this policy, just declare the + * encoding !) + */ + { + char buffer[150]; + + if (ctxt->input->end - ctxt->input->cur >= 4) { + snprintf(buffer, 149, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n", + ctxt->input->cur[0], ctxt->input->cur[1], + ctxt->input->cur[2], ctxt->input->cur[3]); + } else { + snprintf(buffer, 149, "Bytes: 0x%02X\n", ctxt->input->cur[0]); + } + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "Input is not proper UTF-8, indicate encoding !\n", + BAD_CAST buffer, NULL); + } + + ctxt->charset = XML_CHAR_ENCODING_8859_1; + *len = 1; + return((int) *ctxt->input->cur); +} + +/** + * htmlSkipBlankChars: + * @ctxt: the HTML parser context + * + * skip all blanks character found at that point in the input streams. + * + * Returns the number of space chars skipped + */ + +static int +htmlSkipBlankChars(xmlParserCtxtPtr ctxt) { + int res = 0; + + while (IS_BLANK_CH(*(ctxt->input->cur))) { + if ((*ctxt->input->cur == 0) && + (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0)) { + xmlPopInput(ctxt); + } else { + if (*(ctxt->input->cur) == '\n') { + ctxt->input->line++; ctxt->input->col = 1; + } else ctxt->input->col++; + ctxt->input->cur++; + ctxt->nbChars++; + if (*ctxt->input->cur == 0) + xmlParserInputGrow(ctxt->input, INPUT_CHUNK); + } + res++; + } + return(res); +} + + + +/************************************************************************ + * * + * The list of HTML elements and their properties * + * * + ************************************************************************/ + +/* + * Start Tag: 1 means the start tag can be ommited + * End Tag: 1 means the end tag can be ommited + * 2 means it's forbidden (empty elements) + * 3 means the tag is stylistic and should be closed easily + * Depr: this element is deprecated + * DTD: 1 means that this element is valid only in the Loose DTD + * 2 means that this element is valid only in the Frameset DTD + * + * Name,Start Tag,End Tag,Save End,Empty,Deprecated,DTD,inline,Description + , subElements , impliedsubelt , Attributes, userdata + */ + +/* Definitions and a couple of vars for HTML Elements */ + +#define FONTSTYLE "tt", "i", "b", "u", "s", "strike", "big", "small" +#define NB_FONTSTYLE 8 +#define PHRASE "em", "strong", "dfn", "code", "samp", "kbd", "var", "cite", "abbr", "acronym" +#define NB_PHRASE 10 +#define SPECIAL "a", "img", "applet", "embed", "object", "font", "basefont", "br", "script", "map", "q", "sub", "sup", "span", "bdo", "iframe" +#define NB_SPECIAL 16 +#define INLINE FONTSTYLE, PHRASE, SPECIAL, FORMCTRL +#define NB_INLINE NB_PCDATA + NB_FONTSTYLE + NB_PHRASE + NB_SPECIAL + NB_FORMCTRL +#define BLOCK HEADING, LIST, "pre", "p", "dl", "div", "center", "noscript", "noframes", "blockquote", "form", "isindex", "hr", "table", "fieldset", "address" +#define NB_BLOCK NB_HEADING + NB_LIST + 14 +#define FORMCTRL "input", "select", "textarea", "label", "button" +#define NB_FORMCTRL 5 +#define PCDATA +#define NB_PCDATA 0 +#define HEADING "h1", "h2", "h3", "h4", "h5", "h6" +#define NB_HEADING 6 +#define LIST "ul", "ol", "dir", "menu" +#define NB_LIST 4 +#define MODIFIER +#define NB_MODIFIER 0 +#define FLOW BLOCK,INLINE +#define NB_FLOW NB_BLOCK + NB_INLINE +#define EMPTY NULL + + +static const char* const html_flow[] = { FLOW, NULL } ; +static const char* const html_inline[] = { INLINE, NULL } ; + +/* placeholders: elts with content but no subelements */ +static const char* const html_pcdata[] = { NULL } ; +#define html_cdata html_pcdata + + +/* ... and for HTML Attributes */ + +#define COREATTRS "id", "class", "style", "title" +#define NB_COREATTRS 4 +#define I18N "lang", "dir" +#define NB_I18N 2 +#define EVENTS "onclick", "ondblclick", "onmousedown", "onmouseup", "onmouseover", "onmouseout", "onkeypress", "onkeydown", "onkeyup" +#define NB_EVENTS 9 +#define ATTRS COREATTRS,I18N,EVENTS +#define NB_ATTRS NB_NB_COREATTRS + NB_I18N + NB_EVENTS +#define CELLHALIGN "align", "char", "charoff" +#define NB_CELLHALIGN 3 +#define CELLVALIGN "valign" +#define NB_CELLVALIGN 1 + +static const char* const html_attrs[] = { ATTRS, NULL } ; +static const char* const core_i18n_attrs[] = { COREATTRS, I18N, NULL } ; +static const char* const core_attrs[] = { COREATTRS, NULL } ; +static const char* const i18n_attrs[] = { I18N, NULL } ; + + +/* Other declarations that should go inline ... */ +static const char* const a_attrs[] = { ATTRS, "charset", "type", "name", + "href", "hreflang", "rel", "rev", "accesskey", "shape", "coords", + "tabindex", "onfocus", "onblur", NULL } ; +static const char* const target_attr[] = { "target", NULL } ; +static const char* const rows_cols_attr[] = { "rows", "cols", NULL } ; +static const char* const alt_attr[] = { "alt", NULL } ; +static const char* const src_alt_attrs[] = { "src", "alt", NULL } ; +static const char* const href_attrs[] = { "href", NULL } ; +static const char* const clear_attrs[] = { "clear", NULL } ; +static const char* const inline_p[] = { INLINE, "p", NULL } ; + +static const char* const flow_param[] = { FLOW, "param", NULL } ; +static const char* const applet_attrs[] = { COREATTRS , "codebase", + "archive", "alt", "name", "height", "width", "align", + "hspace", "vspace", NULL } ; +static const char* const area_attrs[] = { "shape", "coords", "href", "nohref", + "tabindex", "accesskey", "onfocus", "onblur", NULL } ; +static const char* const basefont_attrs[] = + { "id", "size", "color", "face", NULL } ; +static const char* const quote_attrs[] = { ATTRS, "cite", NULL } ; +static const char* const body_contents[] = { FLOW, "ins", "del", NULL } ; +static const char* const body_attrs[] = { ATTRS, "onload", "onunload", NULL } ; +static const char* const body_depr[] = { "background", "bgcolor", "text", + "link", "vlink", "alink", NULL } ; +static const char* const button_attrs[] = { ATTRS, "name", "value", "type", + "disabled", "tabindex", "accesskey", "onfocus", "onblur", NULL } ; + + +static const char* const col_attrs[] = { ATTRS, "span", "width", CELLHALIGN, CELLVALIGN, NULL } ; +static const char* const col_elt[] = { "col", NULL } ; +static const char* const edit_attrs[] = { ATTRS, "datetime", "cite", NULL } ; +static const char* const compact_attrs[] = { ATTRS, "compact", NULL } ; +static const char* const dl_contents[] = { "dt", "dd", NULL } ; +static const char* const compact_attr[] = { "compact", NULL } ; +static const char* const label_attr[] = { "label", NULL } ; +static const char* const fieldset_contents[] = { FLOW, "legend" } ; +static const char* const font_attrs[] = { COREATTRS, I18N, "size", "color", "face" , NULL } ; +static const char* const form_contents[] = { HEADING, LIST, INLINE, "pre", "p", "div", "center", "noscript", "noframes", "blockquote", "isindex", "hr", "table", "fieldset", "address", NULL } ; +static const char* const form_attrs[] = { ATTRS, "method", "enctype", "accept", "name", "onsubmit", "onreset", "accept-charset", NULL } ; +static const char* const frame_attrs[] = { COREATTRS, "longdesc", "name", "src", "frameborder", "marginwidth", "marginheight", "noresize", "scrolling" , NULL } ; +static const char* const frameset_attrs[] = { COREATTRS, "rows", "cols", "onload", "onunload", NULL } ; +static const char* const frameset_contents[] = { "frameset", "frame", "noframes", NULL } ; +static const char* const head_attrs[] = { I18N, "profile", NULL } ; +static const char* const head_contents[] = { "title", "isindex", "base", "script", "style", "meta", "link", "object", NULL } ; +static const char* const hr_depr[] = { "align", "noshade", "size", "width", NULL } ; +static const char* const version_attr[] = { "version", NULL } ; +static const char* const html_content[] = { "head", "body", "frameset", NULL } ; +static const char* const iframe_attrs[] = { COREATTRS, "longdesc", "name", "src", "frameborder", "marginwidth", "marginheight", "scrolling", "align", "height", "width", NULL } ; +static const char* const img_attrs[] = { ATTRS, "longdesc", "name", "height", "width", "usemap", "ismap", NULL } ; +static const char* const embed_attrs[] = { COREATTRS, "align", "alt", "border", "code", "codebase", "frameborder", "height", "hidden", "hspace", "name", "palette", "pluginspace", "pluginurl", "src", "type", "units", "vspace", "width", NULL } ; +static const char* const input_attrs[] = { ATTRS, "type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "ismap", "tabindex", "accesskey", "onfocus", "onblur", "onselect", "onchange", "accept", NULL } ; +static const char* const prompt_attrs[] = { COREATTRS, I18N, "prompt", NULL } ; +static const char* const label_attrs[] = { ATTRS, "for", "accesskey", "onfocus", "onblur", NULL } ; +static const char* const legend_attrs[] = { ATTRS, "accesskey", NULL } ; +static const char* const align_attr[] = { "align", NULL } ; +static const char* const link_attrs[] = { ATTRS, "charset", "href", "hreflang", "type", "rel", "rev", "media", NULL } ; +static const char* const map_contents[] = { BLOCK, "area", NULL } ; +static const char* const name_attr[] = { "name", NULL } ; +static const char* const action_attr[] = { "action", NULL } ; +static const char* const blockli_elt[] = { BLOCK, "li", NULL } ; +static const char* const meta_attrs[] = { I18N, "http-equiv", "name", "scheme", NULL } ; +static const char* const content_attr[] = { "content", NULL } ; +static const char* const type_attr[] = { "type", NULL } ; +static const char* const noframes_content[] = { "body", FLOW MODIFIER, NULL } ; +static const char* const object_contents[] = { FLOW, "param", NULL } ; +static const char* const object_attrs[] = { ATTRS, "declare", "classid", "codebase", "data", "type", "codetype", "archive", "standby", "height", "width", "usemap", "name", "tabindex", NULL } ; +static const char* const object_depr[] = { "align", "border", "hspace", "vspace", NULL } ; +static const char* const ol_attrs[] = { "type", "compact", "start", NULL} ; +static const char* const option_elt[] = { "option", NULL } ; +static const char* const optgroup_attrs[] = { ATTRS, "disabled", NULL } ; +static const char* const option_attrs[] = { ATTRS, "disabled", "label", "selected", "value", NULL } ; +static const char* const param_attrs[] = { "id", "value", "valuetype", "type", NULL } ; +static const char* const width_attr[] = { "width", NULL } ; +static const char* const pre_content[] = { PHRASE, "tt", "i", "b", "u", "s", "strike", "a", "br", "script", "map", "q", "span", "bdo", "iframe", NULL } ; +static const char* const script_attrs[] = { "charset", "src", "defer", "event", "for", NULL } ; +static const char* const language_attr[] = { "language", NULL } ; +static const char* const select_content[] = { "optgroup", "option", NULL } ; +static const char* const select_attrs[] = { ATTRS, "name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange", NULL } ; +static const char* const style_attrs[] = { I18N, "media", "title", NULL } ; +static const char* const table_attrs[] = { ATTRS, "summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding", "datapagesize", NULL } ; +static const char* const table_depr[] = { "align", "bgcolor", NULL } ; +static const char* const table_contents[] = { "caption", "col", "colgroup", "thead", "tfoot", "tbody", "tr", NULL} ; +static const char* const tr_elt[] = { "tr", NULL } ; +static const char* const talign_attrs[] = { ATTRS, CELLHALIGN, CELLVALIGN, NULL} ; +static const char* const th_td_depr[] = { "nowrap", "bgcolor", "width", "height", NULL } ; +static const char* const th_td_attr[] = { ATTRS, "abbr", "axis", "headers", "scope", "rowspan", "colspan", CELLHALIGN, CELLVALIGN, NULL } ; +static const char* const textarea_attrs[] = { ATTRS, "name", "disabled", "readonly", "tabindex", "accesskey", "onfocus", "onblur", "onselect", "onchange", NULL } ; +static const char* const tr_contents[] = { "th", "td", NULL } ; +static const char* const bgcolor_attr[] = { "bgcolor", NULL } ; +static const char* const li_elt[] = { "li", NULL } ; +static const char* const ul_depr[] = { "type", "compact", NULL} ; +static const char* const dir_attr[] = { "dir", NULL} ; + +#define DECL (const char**) + +static const htmlElemDesc +html40ElementTable[] = { +{ "a", 0, 0, 0, 0, 0, 0, 1, "anchor ", + DECL html_inline , NULL , DECL a_attrs , DECL target_attr, NULL +}, +{ "abbr", 0, 0, 0, 0, 0, 0, 1, "abbreviated form", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "acronym", 0, 0, 0, 0, 0, 0, 1, "", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "address", 0, 0, 0, 0, 0, 0, 0, "information on author ", + DECL inline_p , NULL , DECL html_attrs, NULL, NULL +}, +{ "applet", 0, 0, 0, 0, 1, 1, 2, "java applet ", + DECL flow_param , NULL , NULL , DECL applet_attrs, NULL +}, +{ "area", 0, 2, 2, 1, 0, 0, 0, "client-side image map area ", + EMPTY , NULL , DECL area_attrs , DECL target_attr, DECL alt_attr +}, +{ "b", 0, 3, 0, 0, 0, 0, 1, "bold text style", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "base", 0, 2, 2, 1, 0, 0, 0, "document base uri ", + EMPTY , NULL , NULL , DECL target_attr, DECL href_attrs +}, +{ "basefont", 0, 2, 2, 1, 1, 1, 1, "base font size " , + EMPTY , NULL , NULL, DECL basefont_attrs, NULL +}, +{ "bdo", 0, 0, 0, 0, 0, 0, 1, "i18n bidi over-ride ", + DECL html_inline , NULL , DECL core_i18n_attrs, NULL, DECL dir_attr +}, +{ "big", 0, 3, 0, 0, 0, 0, 1, "large text style", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "blockquote", 0, 0, 0, 0, 0, 0, 0, "long quotation ", + DECL html_flow , NULL , DECL quote_attrs , NULL, NULL +}, +{ "body", 1, 1, 0, 0, 0, 0, 0, "document body ", + DECL body_contents , "div" , DECL body_attrs, DECL body_depr, NULL +}, +{ "br", 0, 2, 2, 1, 0, 0, 1, "forced line break ", + EMPTY , NULL , DECL core_attrs, DECL clear_attrs , NULL +}, +{ "button", 0, 0, 0, 0, 0, 0, 2, "push button ", + DECL html_flow MODIFIER , NULL , DECL button_attrs, NULL, NULL +}, +{ "caption", 0, 0, 0, 0, 0, 0, 0, "table caption ", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "center", 0, 3, 0, 0, 1, 1, 0, "shorthand for div align=center ", + DECL html_flow , NULL , NULL, DECL html_attrs, NULL +}, +{ "cite", 0, 0, 0, 0, 0, 0, 1, "citation", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "code", 0, 0, 0, 0, 0, 0, 1, "computer code fragment", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "col", 0, 2, 2, 1, 0, 0, 0, "table column ", + EMPTY , NULL , DECL col_attrs , NULL, NULL +}, +{ "colgroup", 0, 1, 0, 0, 0, 0, 0, "table column group ", + DECL col_elt , "col" , DECL col_attrs , NULL, NULL +}, +{ "dd", 0, 1, 0, 0, 0, 0, 0, "definition description ", + DECL html_flow , NULL , DECL html_attrs, NULL, NULL +}, +{ "del", 0, 0, 0, 0, 0, 0, 2, "deleted text ", + DECL html_flow , NULL , DECL edit_attrs , NULL, NULL +}, +{ "dfn", 0, 0, 0, 0, 0, 0, 1, "instance definition", + DECL html_inline , NULL , DECL html_attrs, NULL, NULL +}, +{ "dir", 0, 0, 0, 0, 1, 1, 0, "directory list", + DECL blockli_elt, "li" , NULL, DECL compact_attrs, NULL +}, +{ "div", 0, 0, 0, 0, 0, 0, 0, "generic language/style container", + DECL html_flow, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "dl", 0, 0, 0, 0, 0, 0, 0, "definition list ", + DECL dl_contents , "dd" , DECL html_attrs, DECL compact_attr, NULL +}, +{ "dt", 0, 1, 0, 0, 0, 0, 0, "definition term ", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "em", 0, 3, 0, 0, 0, 0, 1, "emphasis", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "embed", 0, 1, 0, 0, 1, 1, 1, "generic embedded object ", + EMPTY, NULL, DECL embed_attrs, NULL, NULL +}, +{ "fieldset", 0, 0, 0, 0, 0, 0, 0, "form control group ", + DECL fieldset_contents , NULL, DECL html_attrs, NULL, NULL +}, +{ "font", 0, 3, 0, 0, 1, 1, 1, "local change to font ", + DECL html_inline, NULL, NULL, DECL font_attrs, NULL +}, +{ "form", 0, 0, 0, 0, 0, 0, 0, "interactive form ", + DECL form_contents, "fieldset", DECL form_attrs , DECL target_attr, DECL action_attr +}, +{ "frame", 0, 2, 2, 1, 0, 2, 0, "subwindow " , + EMPTY, NULL, NULL, DECL frame_attrs, NULL +}, +{ "frameset", 0, 0, 0, 0, 0, 2, 0, "window subdivision" , + DECL frameset_contents, "noframes" , NULL , DECL frameset_attrs, NULL +}, +{ "h1", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "h2", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "h3", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "h4", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "h5", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "h6", 0, 0, 0, 0, 0, 0, 0, "heading ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "head", 1, 1, 0, 0, 0, 0, 0, "document head ", + DECL head_contents, NULL, DECL head_attrs, NULL, NULL +}, +{ "hr", 0, 2, 2, 1, 0, 0, 0, "horizontal rule " , + EMPTY, NULL, DECL html_attrs, DECL hr_depr, NULL +}, +{ "html", 1, 1, 0, 0, 0, 0, 0, "document root element ", + DECL html_content , NULL , DECL i18n_attrs, DECL version_attr, NULL +}, +{ "i", 0, 3, 0, 0, 0, 0, 1, "italic text style", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "iframe", 0, 0, 0, 0, 0, 1, 2, "inline subwindow ", + DECL html_flow, NULL, NULL, DECL iframe_attrs, NULL +}, +{ "img", 0, 2, 2, 1, 0, 0, 1, "embedded image ", + EMPTY, NULL, DECL img_attrs, DECL align_attr, DECL src_alt_attrs +}, +{ "input", 0, 2, 2, 1, 0, 0, 1, "form control ", + EMPTY, NULL, DECL input_attrs , DECL align_attr, NULL +}, +{ "ins", 0, 0, 0, 0, 0, 0, 2, "inserted text", + DECL html_flow, NULL, DECL edit_attrs, NULL, NULL +}, +{ "isindex", 0, 2, 2, 1, 1, 1, 0, "single line prompt ", + EMPTY, NULL, NULL, DECL prompt_attrs, NULL +}, +{ "kbd", 0, 0, 0, 0, 0, 0, 1, "text to be entered by the user", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "label", 0, 0, 0, 0, 0, 0, 1, "form field label text ", + DECL html_inline MODIFIER, NULL, DECL label_attrs , NULL, NULL +}, +{ "legend", 0, 0, 0, 0, 0, 0, 0, "fieldset legend ", + DECL html_inline, NULL, DECL legend_attrs , DECL align_attr, NULL +}, +{ "li", 0, 1, 1, 0, 0, 0, 0, "list item ", + DECL html_flow, NULL, DECL html_attrs, NULL, NULL +}, +{ "link", 0, 2, 2, 1, 0, 0, 0, "a media-independent link ", + EMPTY, NULL, DECL link_attrs, DECL target_attr, NULL +}, +{ "map", 0, 0, 0, 0, 0, 0, 2, "client-side image map ", + DECL map_contents , NULL, DECL html_attrs , NULL, DECL name_attr +}, +{ "menu", 0, 0, 0, 0, 1, 1, 0, "menu list ", + DECL blockli_elt , NULL, NULL, DECL compact_attrs, NULL +}, +{ "meta", 0, 2, 2, 1, 0, 0, 0, "generic metainformation ", + EMPTY, NULL, DECL meta_attrs , NULL , DECL content_attr +}, +{ "noframes", 0, 0, 0, 0, 0, 2, 0, "alternate content container for non frame-based rendering ", + DECL noframes_content, "body" , DECL html_attrs, NULL, NULL +}, +{ "noscript", 0, 0, 0, 0, 0, 0, 0, "alternate content container for non script-based rendering ", + DECL html_flow, "div", DECL html_attrs, NULL, NULL +}, +{ "object", 0, 0, 0, 0, 0, 0, 2, "generic embedded object ", + DECL object_contents , "div" , DECL object_attrs, DECL object_depr, NULL +}, +{ "ol", 0, 0, 0, 0, 0, 0, 0, "ordered list ", + DECL li_elt , "li" , DECL html_attrs, DECL ol_attrs, NULL +}, +{ "optgroup", 0, 0, 0, 0, 0, 0, 0, "option group ", + DECL option_elt , "option", DECL optgroup_attrs, NULL, DECL label_attr +}, +{ "option", 0, 1, 0, 0, 0, 0, 0, "selectable choice " , + DECL html_pcdata, NULL, DECL option_attrs, NULL, NULL +}, +{ "p", 0, 1, 0, 0, 0, 0, 0, "paragraph ", + DECL html_inline, NULL, DECL html_attrs, DECL align_attr, NULL +}, +{ "param", 0, 2, 2, 1, 0, 0, 0, "named property value ", + EMPTY, NULL, DECL param_attrs, NULL, DECL name_attr +}, +{ "pre", 0, 0, 0, 0, 0, 0, 0, "preformatted text ", + DECL pre_content, NULL, DECL html_attrs, DECL width_attr, NULL +}, +{ "q", 0, 0, 0, 0, 0, 0, 1, "short inline quotation ", + DECL html_inline, NULL, DECL quote_attrs, NULL, NULL +}, +{ "s", 0, 3, 0, 0, 1, 1, 1, "strike-through text style", + DECL html_inline, NULL, NULL, DECL html_attrs, NULL +}, +{ "samp", 0, 0, 0, 0, 0, 0, 1, "sample program output, scripts, etc.", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "script", 0, 0, 0, 0, 0, 0, 2, "script statements ", + DECL html_cdata, NULL, DECL script_attrs, DECL language_attr, DECL type_attr +}, +{ "select", 0, 0, 0, 0, 0, 0, 1, "option selector ", + DECL select_content, NULL, DECL select_attrs, NULL, NULL +}, +{ "small", 0, 3, 0, 0, 0, 0, 1, "small text style", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "span", 0, 0, 0, 0, 0, 0, 1, "generic language/style container ", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "strike", 0, 3, 0, 0, 1, 1, 1, "strike-through text", + DECL html_inline, NULL, NULL, DECL html_attrs, NULL +}, +{ "strong", 0, 3, 0, 0, 0, 0, 1, "strong emphasis", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "style", 0, 0, 0, 0, 0, 0, 0, "style info ", + DECL html_cdata, NULL, DECL style_attrs, NULL, DECL type_attr +}, +{ "sub", 0, 3, 0, 0, 0, 0, 1, "subscript", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "sup", 0, 3, 0, 0, 0, 0, 1, "superscript ", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "table", 0, 0, 0, 0, 0, 0, 0, "", + DECL table_contents , "tr" , DECL table_attrs , DECL table_depr, NULL +}, +{ "tbody", 1, 0, 0, 0, 0, 0, 0, "table body ", + DECL tr_elt , "tr" , DECL talign_attrs, NULL, NULL +}, +{ "td", 0, 0, 0, 0, 0, 0, 0, "table data cell", + DECL html_flow, NULL, DECL th_td_attr, DECL th_td_depr, NULL +}, +{ "textarea", 0, 0, 0, 0, 0, 0, 1, "multi-line text field ", + DECL html_pcdata, NULL, DECL textarea_attrs, NULL, DECL rows_cols_attr +}, +{ "tfoot", 0, 1, 0, 0, 0, 0, 0, "table footer ", + DECL tr_elt , "tr" , DECL talign_attrs, NULL, NULL +}, +{ "th", 0, 1, 0, 0, 0, 0, 0, "table header cell", + DECL html_flow, NULL, DECL th_td_attr, DECL th_td_depr, NULL +}, +{ "thead", 0, 1, 0, 0, 0, 0, 0, "table header ", + DECL tr_elt , "tr" , DECL talign_attrs, NULL, NULL +}, +{ "title", 0, 0, 0, 0, 0, 0, 0, "document title ", + DECL html_pcdata, NULL, DECL i18n_attrs, NULL, NULL +}, +{ "tr", 0, 0, 0, 0, 0, 0, 0, "table row ", + DECL tr_contents , "td" , DECL talign_attrs, DECL bgcolor_attr, NULL +}, +{ "tt", 0, 3, 0, 0, 0, 0, 1, "teletype or monospaced text style", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +}, +{ "u", 0, 3, 0, 0, 1, 1, 1, "underlined text style", + DECL html_inline, NULL, NULL, DECL html_attrs, NULL +}, +{ "ul", 0, 0, 0, 0, 0, 0, 0, "unordered list ", + DECL li_elt , "li" , DECL html_attrs, DECL ul_depr, NULL +}, +{ "var", 0, 0, 0, 0, 0, 0, 1, "instance of a variable or program argument", + DECL html_inline, NULL, DECL html_attrs, NULL, NULL +} +}; + +/* + * start tags that imply the end of current element + */ +static const char * const htmlStartClose[] = { +"form", "form", "p", "hr", "h1", "h2", "h3", "h4", "h5", "h6", + "dl", "ul", "ol", "menu", "dir", "address", "pre", + "listing", "xmp", "head", NULL, +"head", "p", NULL, +"title", "p", NULL, +"body", "head", "style", "link", "title", "p", NULL, +"frameset", "head", "style", "link", "title", "p", NULL, +"li", "p", "h1", "h2", "h3", "h4", "h5", "h6", "dl", "address", + "pre", "listing", "xmp", "head", "li", NULL, +"hr", "p", "head", NULL, +"h1", "p", "head", NULL, +"h2", "p", "head", NULL, +"h3", "p", "head", NULL, +"h4", "p", "head", NULL, +"h5", "p", "head", NULL, +"h6", "p", "head", NULL, +"dir", "p", "head", NULL, +"address", "p", "head", "ul", NULL, +"pre", "p", "head", "ul", NULL, +"listing", "p", "head", NULL, +"xmp", "p", "head", NULL, +"blockquote", "p", "head", NULL, +"dl", "p", "dt", "menu", "dir", "address", "pre", "listing", + "xmp", "head", NULL, +"dt", "p", "menu", "dir", "address", "pre", "listing", "xmp", + "head", "dd", NULL, +"dd", "p", "menu", "dir", "address", "pre", "listing", "xmp", + "head", "dt", NULL, +"ul", "p", "head", "ol", "menu", "dir", "address", "pre", + "listing", "xmp", NULL, +"ol", "p", "head", "ul", NULL, +"menu", "p", "head", "ul", NULL, +"p", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", FONTSTYLE, NULL, +"div", "p", "head", NULL, +"noscript", "p", "head", NULL, +"center", "font", "b", "i", "p", "head", NULL, +"a", "a", NULL, +"caption", "p", NULL, +"colgroup", "caption", "colgroup", "col", "p", NULL, +"col", "caption", "col", "p", NULL, +"table", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", "pre", + "listing", "xmp", "a", NULL, +"th", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, +"td", "th", "td", "p", "span", "font", "a", "b", "i", "u", NULL, +"tr", "th", "td", "tr", "caption", "col", "colgroup", "p", NULL, +"thead", "caption", "col", "colgroup", NULL, +"tfoot", "th", "td", "tr", "caption", "col", "colgroup", "thead", + "tbody", "p", NULL, +"tbody", "th", "td", "tr", "caption", "col", "colgroup", "thead", + "tfoot", "tbody", "p", NULL, +"optgroup", "option", NULL, +"option", "option", NULL, +"fieldset", "legend", "p", "head", "h1", "h2", "h3", "h4", "h5", "h6", + "pre", "listing", "xmp", "a", NULL, +NULL +}; + +/* + * The list of HTML elements which are supposed not to have + * CDATA content and where a p element will be implied + * + * TODO: extend that list by reading the HTML SGML DTD on + * implied paragraph + */ +static const char *const htmlNoContentElements[] = { + "html", + "head", + NULL +}; + +/* + * The list of HTML attributes which are of content %Script; + * NOTE: when adding ones, check htmlIsScriptAttribute() since + * it assumes the name starts with 'on' + */ +static const char *const htmlScriptAttributes[] = { + "onclick", + "ondblclick", + "onmousedown", + "onmouseup", + "onmouseover", + "onmousemove", + "onmouseout", + "onkeypress", + "onkeydown", + "onkeyup", + "onload", + "onunload", + "onfocus", + "onblur", + "onsubmit", + "onrest", + "onchange", + "onselect" +}; + +/* + * This table is used by the htmlparser to know what to do with + * broken html pages. By assigning different priorities to different + * elements the parser can decide how to handle extra endtags. + * Endtags are only allowed to close elements with lower or equal + * priority. + */ + +typedef struct { + const char *name; + int priority; +} elementPriority; + +static const elementPriority htmlEndPriority[] = { + {"div", 150}, + {"td", 160}, + {"th", 160}, + {"tr", 170}, + {"thead", 180}, + {"tbody", 180}, + {"tfoot", 180}, + {"table", 190}, + {"head", 200}, + {"body", 200}, + {"html", 220}, + {NULL, 100} /* Default priority */ +}; + +static const char** htmlStartCloseIndex[100]; +static int htmlStartCloseIndexinitialized = 0; + +/************************************************************************ + * * + * functions to handle HTML specific data * + * * + ************************************************************************/ + +/** + * htmlInitAutoClose: + * + * Initialize the htmlStartCloseIndex for fast lookup of closing tags names. + * This is not reentrant. Call xmlInitParser() once before processing in + * case of use in multithreaded programs. + */ +void +htmlInitAutoClose(void) { + int indx, i = 0; + + if (htmlStartCloseIndexinitialized) return; + + for (indx = 0;indx < 100;indx ++) htmlStartCloseIndex[indx] = NULL; + indx = 0; + while ((htmlStartClose[i] != NULL) && (indx < 100 - 1)) { + htmlStartCloseIndex[indx++] = (const char**) &htmlStartClose[i]; + while (htmlStartClose[i] != NULL) i++; + i++; + } + htmlStartCloseIndexinitialized = 1; +} + +/** + * htmlTagLookup: + * @tag: The tag name in lowercase + * + * Lookup the HTML tag in the ElementTable + * + * Returns the related htmlElemDescPtr or NULL if not found. + */ +const htmlElemDesc * +htmlTagLookup(const xmlChar *tag) { + unsigned int i; + + for (i = 0; i < (sizeof(html40ElementTable) / + sizeof(html40ElementTable[0]));i++) { + if (!xmlStrcasecmp(tag, BAD_CAST html40ElementTable[i].name)) + return((htmlElemDescPtr) &html40ElementTable[i]); + } + return(NULL); +} + +/** + * htmlGetEndPriority: + * @name: The name of the element to look up the priority for. + * + * Return value: The "endtag" priority. + **/ +static int +htmlGetEndPriority (const xmlChar *name) { + int i = 0; + + while ((htmlEndPriority[i].name != NULL) && + (!xmlStrEqual((const xmlChar *)htmlEndPriority[i].name, name))) + i++; + + return(htmlEndPriority[i].priority); +} + + +/** + * htmlCheckAutoClose: + * @newtag: The new tag name + * @oldtag: The old tag name + * + * Checks whether the new tag is one of the registered valid tags for + * closing old. + * Initialize the htmlStartCloseIndex for fast lookup of closing tags names. + * + * Returns 0 if no, 1 if yes. + */ +static int +htmlCheckAutoClose(const xmlChar * newtag, const xmlChar * oldtag) +{ + int i, indx; + const char **closed = NULL; + + if (htmlStartCloseIndexinitialized == 0) + htmlInitAutoClose(); + + /* inefficient, but not a big deal */ + for (indx = 0; indx < 100; indx++) { + closed = htmlStartCloseIndex[indx]; + if (closed == NULL) + return (0); + if (xmlStrEqual(BAD_CAST * closed, newtag)) + break; + } + + i = closed - htmlStartClose; + i++; + while (htmlStartClose[i] != NULL) { + if (xmlStrEqual(BAD_CAST htmlStartClose[i], oldtag)) { + return (1); + } + i++; + } + return (0); +} + +/** + * htmlAutoCloseOnClose: + * @ctxt: an HTML parser context + * @newtag: The new tag name + * @force: force the tag closure + * + * The HTML DTD allows an ending tag to implicitly close other tags. + */ +static void +htmlAutoCloseOnClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag) +{ + const htmlElemDesc *info; + int i, priority; + + priority = htmlGetEndPriority(newtag); + + for (i = (ctxt->nameNr - 1); i >= 0; i--) { + + if (xmlStrEqual(newtag, ctxt->nameTab[i])) + break; + /* + * A missplaced endtag can only close elements with lower + * or equal priority, so if we find an element with higher + * priority before we find an element with + * matching name, we just ignore this endtag + */ + if (htmlGetEndPriority(ctxt->nameTab[i]) > priority) + return; + } + if (i < 0) + return; + + while (!xmlStrEqual(newtag, ctxt->name)) { + info = htmlTagLookup(ctxt->name); + if ((info != NULL) && (info->endTag == 3)) { + htmlParseErr(ctxt, XML_ERR_TAG_NAME_MISMATCH, + "Opening and ending tag mismatch: %s and %s\n", + newtag, ctxt->name); + } + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, ctxt->name); + htmlnamePop(ctxt); + } +} + +/** + * htmlAutoCloseOnEnd: + * @ctxt: an HTML parser context + * + * Close all remaining tags at the end of the stream + */ +static void +htmlAutoCloseOnEnd(htmlParserCtxtPtr ctxt) +{ + int i; + + if (ctxt->nameNr == 0) + return; + for (i = (ctxt->nameNr - 1); i >= 0; i--) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, ctxt->name); + htmlnamePop(ctxt); + } +} + +/** + * htmlAutoClose: + * @ctxt: an HTML parser context + * @newtag: The new tag name or NULL + * + * The HTML DTD allows a tag to implicitly close other tags. + * The list is kept in htmlStartClose array. This function is + * called when a new tag has been detected and generates the + * appropriates closes if possible/needed. + * If newtag is NULL this mean we are at the end of the resource + * and we should check + */ +static void +htmlAutoClose(htmlParserCtxtPtr ctxt, const xmlChar * newtag) +{ + while ((newtag != NULL) && (ctxt->name != NULL) && + (htmlCheckAutoClose(newtag, ctxt->name))) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, ctxt->name); + htmlnamePop(ctxt); + } + if (newtag == NULL) { + htmlAutoCloseOnEnd(ctxt); + return; + } + while ((newtag == NULL) && (ctxt->name != NULL) && + ((xmlStrEqual(ctxt->name, BAD_CAST "head")) || + (xmlStrEqual(ctxt->name, BAD_CAST "body")) || + (xmlStrEqual(ctxt->name, BAD_CAST "html")))) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, ctxt->name); + htmlnamePop(ctxt); + } +} + +/** + * htmlAutoCloseTag: + * @doc: the HTML document + * @name: The tag name + * @elem: the HTML element + * + * The HTML DTD allows a tag to implicitly close other tags. + * The list is kept in htmlStartClose array. This function checks + * if the element or one of it's children would autoclose the + * given tag. + * + * Returns 1 if autoclose, 0 otherwise + */ +int +htmlAutoCloseTag(htmlDocPtr doc, const xmlChar *name, htmlNodePtr elem) { + htmlNodePtr child; + + if (elem == NULL) return(1); + if (xmlStrEqual(name, elem->name)) return(0); + if (htmlCheckAutoClose(elem->name, name)) return(1); + child = elem->children; + while (child != NULL) { + if (htmlAutoCloseTag(doc, name, child)) return(1); + child = child->next; + } + return(0); +} + +/** + * htmlIsAutoClosed: + * @doc: the HTML document + * @elem: the HTML element + * + * The HTML DTD allows a tag to implicitly close other tags. + * The list is kept in htmlStartClose array. This function checks + * if a tag is autoclosed by one of it's child + * + * Returns 1 if autoclosed, 0 otherwise + */ +int +htmlIsAutoClosed(htmlDocPtr doc, htmlNodePtr elem) { + htmlNodePtr child; + + if (elem == NULL) return(1); + child = elem->children; + while (child != NULL) { + if (htmlAutoCloseTag(doc, elem->name, child)) return(1); + child = child->next; + } + return(0); +} + +/** + * htmlCheckImplied: + * @ctxt: an HTML parser context + * @newtag: The new tag name + * + * The HTML DTD allows a tag to exists only implicitly + * called when a new tag has been detected and generates the + * appropriates implicit tags if missing + */ +static void +htmlCheckImplied(htmlParserCtxtPtr ctxt, const xmlChar *newtag) { + int i; + + if (ctxt->options & HTML_PARSE_NOIMPLIED) + return; + if (!htmlOmittedDefaultValue) + return; + if (xmlStrEqual(newtag, BAD_CAST"html")) + return; + if (ctxt->nameNr <= 0) { + htmlnamePush(ctxt, BAD_CAST"html"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"html", NULL); + } + if ((xmlStrEqual(newtag, BAD_CAST"body")) || (xmlStrEqual(newtag, BAD_CAST"head"))) + return; + if ((ctxt->nameNr <= 1) && + ((xmlStrEqual(newtag, BAD_CAST"script")) || + (xmlStrEqual(newtag, BAD_CAST"style")) || + (xmlStrEqual(newtag, BAD_CAST"meta")) || + (xmlStrEqual(newtag, BAD_CAST"link")) || + (xmlStrEqual(newtag, BAD_CAST"title")) || + (xmlStrEqual(newtag, BAD_CAST"base")))) { + if (ctxt->html >= 3) { + /* we already saw or generated an <head> before */ + return; + } + /* + * dropped OBJECT ... i you put it first BODY will be + * assumed ! + */ + htmlnamePush(ctxt, BAD_CAST"head"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"head", NULL); + } else if ((!xmlStrEqual(newtag, BAD_CAST"noframes")) && + (!xmlStrEqual(newtag, BAD_CAST"frame")) && + (!xmlStrEqual(newtag, BAD_CAST"frameset"))) { + if (ctxt->html >= 10) { + /* we already saw or generated a <body> before */ + return; + } + for (i = 0;i < ctxt->nameNr;i++) { + if (xmlStrEqual(ctxt->nameTab[i], BAD_CAST"body")) { + return; + } + if (xmlStrEqual(ctxt->nameTab[i], BAD_CAST"head")) { + return; + } + } + + htmlnamePush(ctxt, BAD_CAST"body"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"body", NULL); + } +} + +/** + * htmlCheckParagraph + * @ctxt: an HTML parser context + * + * Check whether a p element need to be implied before inserting + * characters in the current element. + * + * Returns 1 if a paragraph has been inserted, 0 if not and -1 + * in case of error. + */ + +static int +htmlCheckParagraph(htmlParserCtxtPtr ctxt) { + const xmlChar *tag; + int i; + + if (ctxt == NULL) + return(-1); + tag = ctxt->name; + if (tag == NULL) { + htmlAutoClose(ctxt, BAD_CAST"p"); + htmlCheckImplied(ctxt, BAD_CAST"p"); + htmlnamePush(ctxt, BAD_CAST"p"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"p", NULL); + return(1); + } + if (!htmlOmittedDefaultValue) + return(0); + for (i = 0; htmlNoContentElements[i] != NULL; i++) { + if (xmlStrEqual(tag, BAD_CAST htmlNoContentElements[i])) { + htmlAutoClose(ctxt, BAD_CAST"p"); + htmlCheckImplied(ctxt, BAD_CAST"p"); + htmlnamePush(ctxt, BAD_CAST"p"); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) + ctxt->sax->startElement(ctxt->userData, BAD_CAST"p", NULL); + return(1); + } + } + return(0); +} + +/** + * htmlIsScriptAttribute: + * @name: an attribute name + * + * Check if an attribute is of content type Script + * + * Returns 1 is the attribute is a script 0 otherwise + */ +int +htmlIsScriptAttribute(const xmlChar *name) { + unsigned int i; + + if (name == NULL) + return(0); + /* + * all script attributes start with 'on' + */ + if ((name[0] != 'o') || (name[1] != 'n')) + return(0); + for (i = 0; + i < sizeof(htmlScriptAttributes)/sizeof(htmlScriptAttributes[0]); + i++) { + if (xmlStrEqual(name, (const xmlChar *) htmlScriptAttributes[i])) + return(1); + } + return(0); +} + +/************************************************************************ + * * + * The list of HTML predefined entities * + * * + ************************************************************************/ + + +static const htmlEntityDesc html40EntitiesTable[] = { +/* + * the 4 absolute ones, plus apostrophe. + */ +{ 34, "quot", "quotation mark = APL quote, U+0022 ISOnum" }, +{ 38, "amp", "ampersand, U+0026 ISOnum" }, +{ 39, "apos", "single quote" }, +{ 60, "lt", "less-than sign, U+003C ISOnum" }, +{ 62, "gt", "greater-than sign, U+003E ISOnum" }, + +/* + * A bunch still in the 128-255 range + * Replacing them depend really on the charset used. + */ +{ 160, "nbsp", "no-break space = non-breaking space, U+00A0 ISOnum" }, +{ 161, "iexcl","inverted exclamation mark, U+00A1 ISOnum" }, +{ 162, "cent", "cent sign, U+00A2 ISOnum" }, +{ 163, "pound","pound sign, U+00A3 ISOnum" }, +{ 164, "curren","currency sign, U+00A4 ISOnum" }, +{ 165, "yen", "yen sign = yuan sign, U+00A5 ISOnum" }, +{ 166, "brvbar","broken bar = broken vertical bar, U+00A6 ISOnum" }, +{ 167, "sect", "section sign, U+00A7 ISOnum" }, +{ 168, "uml", "diaeresis = spacing diaeresis, U+00A8 ISOdia" }, +{ 169, "copy", "copyright sign, U+00A9 ISOnum" }, +{ 170, "ordf", "feminine ordinal indicator, U+00AA ISOnum" }, +{ 171, "laquo","left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum" }, +{ 172, "not", "not sign, U+00AC ISOnum" }, +{ 173, "shy", "soft hyphen = discretionary hyphen, U+00AD ISOnum" }, +{ 174, "reg", "registered sign = registered trade mark sign, U+00AE ISOnum" }, +{ 175, "macr", "macron = spacing macron = overline = APL overbar, U+00AF ISOdia" }, +{ 176, "deg", "degree sign, U+00B0 ISOnum" }, +{ 177, "plusmn","plus-minus sign = plus-or-minus sign, U+00B1 ISOnum" }, +{ 178, "sup2", "superscript two = superscript digit two = squared, U+00B2 ISOnum" }, +{ 179, "sup3", "superscript three = superscript digit three = cubed, U+00B3 ISOnum" }, +{ 180, "acute","acute accent = spacing acute, U+00B4 ISOdia" }, +{ 181, "micro","micro sign, U+00B5 ISOnum" }, +{ 182, "para", "pilcrow sign = paragraph sign, U+00B6 ISOnum" }, +{ 183, "middot","middle dot = Georgian comma Greek middle dot, U+00B7 ISOnum" }, +{ 184, "cedil","cedilla = spacing cedilla, U+00B8 ISOdia" }, +{ 185, "sup1", "superscript one = superscript digit one, U+00B9 ISOnum" }, +{ 186, "ordm", "masculine ordinal indicator, U+00BA ISOnum" }, +{ 187, "raquo","right-pointing double angle quotation mark right pointing guillemet, U+00BB ISOnum" }, +{ 188, "frac14","vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum" }, +{ 189, "frac12","vulgar fraction one half = fraction one half, U+00BD ISOnum" }, +{ 190, "frac34","vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum" }, +{ 191, "iquest","inverted question mark = turned question mark, U+00BF ISOnum" }, +{ 192, "Agrave","latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1" }, +{ 193, "Aacute","latin capital letter A with acute, U+00C1 ISOlat1" }, +{ 194, "Acirc","latin capital letter A with circumflex, U+00C2 ISOlat1" }, +{ 195, "Atilde","latin capital letter A with tilde, U+00C3 ISOlat1" }, +{ 196, "Auml", "latin capital letter A with diaeresis, U+00C4 ISOlat1" }, +{ 197, "Aring","latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1" }, +{ 198, "AElig","latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1" }, +{ 199, "Ccedil","latin capital letter C with cedilla, U+00C7 ISOlat1" }, +{ 200, "Egrave","latin capital letter E with grave, U+00C8 ISOlat1" }, +{ 201, "Eacute","latin capital letter E with acute, U+00C9 ISOlat1" }, +{ 202, "Ecirc","latin capital letter E with circumflex, U+00CA ISOlat1" }, +{ 203, "Euml", "latin capital letter E with diaeresis, U+00CB ISOlat1" }, +{ 204, "Igrave","latin capital letter I with grave, U+00CC ISOlat1" }, +{ 205, "Iacute","latin capital letter I with acute, U+00CD ISOlat1" }, +{ 206, "Icirc","latin capital letter I with circumflex, U+00CE ISOlat1" }, +{ 207, "Iuml", "latin capital letter I with diaeresis, U+00CF ISOlat1" }, +{ 208, "ETH", "latin capital letter ETH, U+00D0 ISOlat1" }, +{ 209, "Ntilde","latin capital letter N with tilde, U+00D1 ISOlat1" }, +{ 210, "Ograve","latin capital letter O with grave, U+00D2 ISOlat1" }, +{ 211, "Oacute","latin capital letter O with acute, U+00D3 ISOlat1" }, +{ 212, "Ocirc","latin capital letter O with circumflex, U+00D4 ISOlat1" }, +{ 213, "Otilde","latin capital letter O with tilde, U+00D5 ISOlat1" }, +{ 214, "Ouml", "latin capital letter O with diaeresis, U+00D6 ISOlat1" }, +{ 215, "times","multiplication sign, U+00D7 ISOnum" }, +{ 216, "Oslash","latin capital letter O with stroke latin capital letter O slash, U+00D8 ISOlat1" }, +{ 217, "Ugrave","latin capital letter U with grave, U+00D9 ISOlat1" }, +{ 218, "Uacute","latin capital letter U with acute, U+00DA ISOlat1" }, +{ 219, "Ucirc","latin capital letter U with circumflex, U+00DB ISOlat1" }, +{ 220, "Uuml", "latin capital letter U with diaeresis, U+00DC ISOlat1" }, +{ 221, "Yacute","latin capital letter Y with acute, U+00DD ISOlat1" }, +{ 222, "THORN","latin capital letter THORN, U+00DE ISOlat1" }, +{ 223, "szlig","latin small letter sharp s = ess-zed, U+00DF ISOlat1" }, +{ 224, "agrave","latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1" }, +{ 225, "aacute","latin small letter a with acute, U+00E1 ISOlat1" }, +{ 226, "acirc","latin small letter a with circumflex, U+00E2 ISOlat1" }, +{ 227, "atilde","latin small letter a with tilde, U+00E3 ISOlat1" }, +{ 228, "auml", "latin small letter a with diaeresis, U+00E4 ISOlat1" }, +{ 229, "aring","latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1" }, +{ 230, "aelig","latin small letter ae = latin small ligature ae, U+00E6 ISOlat1" }, +{ 231, "ccedil","latin small letter c with cedilla, U+00E7 ISOlat1" }, +{ 232, "egrave","latin small letter e with grave, U+00E8 ISOlat1" }, +{ 233, "eacute","latin small letter e with acute, U+00E9 ISOlat1" }, +{ 234, "ecirc","latin small letter e with circumflex, U+00EA ISOlat1" }, +{ 235, "euml", "latin small letter e with diaeresis, U+00EB ISOlat1" }, +{ 236, "igrave","latin small letter i with grave, U+00EC ISOlat1" }, +{ 237, "iacute","latin small letter i with acute, U+00ED ISOlat1" }, +{ 238, "icirc","latin small letter i with circumflex, U+00EE ISOlat1" }, +{ 239, "iuml", "latin small letter i with diaeresis, U+00EF ISOlat1" }, +{ 240, "eth", "latin small letter eth, U+00F0 ISOlat1" }, +{ 241, "ntilde","latin small letter n with tilde, U+00F1 ISOlat1" }, +{ 242, "ograve","latin small letter o with grave, U+00F2 ISOlat1" }, +{ 243, "oacute","latin small letter o with acute, U+00F3 ISOlat1" }, +{ 244, "ocirc","latin small letter o with circumflex, U+00F4 ISOlat1" }, +{ 245, "otilde","latin small letter o with tilde, U+00F5 ISOlat1" }, +{ 246, "ouml", "latin small letter o with diaeresis, U+00F6 ISOlat1" }, +{ 247, "divide","division sign, U+00F7 ISOnum" }, +{ 248, "oslash","latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1" }, +{ 249, "ugrave","latin small letter u with grave, U+00F9 ISOlat1" }, +{ 250, "uacute","latin small letter u with acute, U+00FA ISOlat1" }, +{ 251, "ucirc","latin small letter u with circumflex, U+00FB ISOlat1" }, +{ 252, "uuml", "latin small letter u with diaeresis, U+00FC ISOlat1" }, +{ 253, "yacute","latin small letter y with acute, U+00FD ISOlat1" }, +{ 254, "thorn","latin small letter thorn with, U+00FE ISOlat1" }, +{ 255, "yuml", "latin small letter y with diaeresis, U+00FF ISOlat1" }, + +{ 338, "OElig","latin capital ligature OE, U+0152 ISOlat2" }, +{ 339, "oelig","latin small ligature oe, U+0153 ISOlat2" }, +{ 352, "Scaron","latin capital letter S with caron, U+0160 ISOlat2" }, +{ 353, "scaron","latin small letter s with caron, U+0161 ISOlat2" }, +{ 376, "Yuml", "latin capital letter Y with diaeresis, U+0178 ISOlat2" }, + +/* + * Anything below should really be kept as entities references + */ +{ 402, "fnof", "latin small f with hook = function = florin, U+0192 ISOtech" }, + +{ 710, "circ", "modifier letter circumflex accent, U+02C6 ISOpub" }, +{ 732, "tilde","small tilde, U+02DC ISOdia" }, + +{ 913, "Alpha","greek capital letter alpha, U+0391" }, +{ 914, "Beta", "greek capital letter beta, U+0392" }, +{ 915, "Gamma","greek capital letter gamma, U+0393 ISOgrk3" }, +{ 916, "Delta","greek capital letter delta, U+0394 ISOgrk3" }, +{ 917, "Epsilon","greek capital letter epsilon, U+0395" }, +{ 918, "Zeta", "greek capital letter zeta, U+0396" }, +{ 919, "Eta", "greek capital letter eta, U+0397" }, +{ 920, "Theta","greek capital letter theta, U+0398 ISOgrk3" }, +{ 921, "Iota", "greek capital letter iota, U+0399" }, +{ 922, "Kappa","greek capital letter kappa, U+039A" }, +{ 923, "Lambda", "greek capital letter lambda, U+039B ISOgrk3" }, +{ 924, "Mu", "greek capital letter mu, U+039C" }, +{ 925, "Nu", "greek capital letter nu, U+039D" }, +{ 926, "Xi", "greek capital letter xi, U+039E ISOgrk3" }, +{ 927, "Omicron","greek capital letter omicron, U+039F" }, +{ 928, "Pi", "greek capital letter pi, U+03A0 ISOgrk3" }, +{ 929, "Rho", "greek capital letter rho, U+03A1" }, +{ 931, "Sigma","greek capital letter sigma, U+03A3 ISOgrk3" }, +{ 932, "Tau", "greek capital letter tau, U+03A4" }, +{ 933, "Upsilon","greek capital letter upsilon, U+03A5 ISOgrk3" }, +{ 934, "Phi", "greek capital letter phi, U+03A6 ISOgrk3" }, +{ 935, "Chi", "greek capital letter chi, U+03A7" }, +{ 936, "Psi", "greek capital letter psi, U+03A8 ISOgrk3" }, +{ 937, "Omega","greek capital letter omega, U+03A9 ISOgrk3" }, + +{ 945, "alpha","greek small letter alpha, U+03B1 ISOgrk3" }, +{ 946, "beta", "greek small letter beta, U+03B2 ISOgrk3" }, +{ 947, "gamma","greek small letter gamma, U+03B3 ISOgrk3" }, +{ 948, "delta","greek small letter delta, U+03B4 ISOgrk3" }, +{ 949, "epsilon","greek small letter epsilon, U+03B5 ISOgrk3" }, +{ 950, "zeta", "greek small letter zeta, U+03B6 ISOgrk3" }, +{ 951, "eta", "greek small letter eta, U+03B7 ISOgrk3" }, +{ 952, "theta","greek small letter theta, U+03B8 ISOgrk3" }, +{ 953, "iota", "greek small letter iota, U+03B9 ISOgrk3" }, +{ 954, "kappa","greek small letter kappa, U+03BA ISOgrk3" }, +{ 955, "lambda","greek small letter lambda, U+03BB ISOgrk3" }, +{ 956, "mu", "greek small letter mu, U+03BC ISOgrk3" }, +{ 957, "nu", "greek small letter nu, U+03BD ISOgrk3" }, +{ 958, "xi", "greek small letter xi, U+03BE ISOgrk3" }, +{ 959, "omicron","greek small letter omicron, U+03BF NEW" }, +{ 960, "pi", "greek small letter pi, U+03C0 ISOgrk3" }, +{ 961, "rho", "greek small letter rho, U+03C1 ISOgrk3" }, +{ 962, "sigmaf","greek small letter final sigma, U+03C2 ISOgrk3" }, +{ 963, "sigma","greek small letter sigma, U+03C3 ISOgrk3" }, +{ 964, "tau", "greek small letter tau, U+03C4 ISOgrk3" }, +{ 965, "upsilon","greek small letter upsilon, U+03C5 ISOgrk3" }, +{ 966, "phi", "greek small letter phi, U+03C6 ISOgrk3" }, +{ 967, "chi", "greek small letter chi, U+03C7 ISOgrk3" }, +{ 968, "psi", "greek small letter psi, U+03C8 ISOgrk3" }, +{ 969, "omega","greek small letter omega, U+03C9 ISOgrk3" }, +{ 977, "thetasym","greek small letter theta symbol, U+03D1 NEW" }, +{ 978, "upsih","greek upsilon with hook symbol, U+03D2 NEW" }, +{ 982, "piv", "greek pi symbol, U+03D6 ISOgrk3" }, + +{ 8194, "ensp", "en space, U+2002 ISOpub" }, +{ 8195, "emsp", "em space, U+2003 ISOpub" }, +{ 8201, "thinsp","thin space, U+2009 ISOpub" }, +{ 8204, "zwnj", "zero width non-joiner, U+200C NEW RFC 2070" }, +{ 8205, "zwj", "zero width joiner, U+200D NEW RFC 2070" }, +{ 8206, "lrm", "left-to-right mark, U+200E NEW RFC 2070" }, +{ 8207, "rlm", "right-to-left mark, U+200F NEW RFC 2070" }, +{ 8211, "ndash","en dash, U+2013 ISOpub" }, +{ 8212, "mdash","em dash, U+2014 ISOpub" }, +{ 8216, "lsquo","left single quotation mark, U+2018 ISOnum" }, +{ 8217, "rsquo","right single quotation mark, U+2019 ISOnum" }, +{ 8218, "sbquo","single low-9 quotation mark, U+201A NEW" }, +{ 8220, "ldquo","left double quotation mark, U+201C ISOnum" }, +{ 8221, "rdquo","right double quotation mark, U+201D ISOnum" }, +{ 8222, "bdquo","double low-9 quotation mark, U+201E NEW" }, +{ 8224, "dagger","dagger, U+2020 ISOpub" }, +{ 8225, "Dagger","double dagger, U+2021 ISOpub" }, + +{ 8226, "bull", "bullet = black small circle, U+2022 ISOpub" }, +{ 8230, "hellip","horizontal ellipsis = three dot leader, U+2026 ISOpub" }, + +{ 8240, "permil","per mille sign, U+2030 ISOtech" }, + +{ 8242, "prime","prime = minutes = feet, U+2032 ISOtech" }, +{ 8243, "Prime","double prime = seconds = inches, U+2033 ISOtech" }, + +{ 8249, "lsaquo","single left-pointing angle quotation mark, U+2039 ISO proposed" }, +{ 8250, "rsaquo","single right-pointing angle quotation mark, U+203A ISO proposed" }, + +{ 8254, "oline","overline = spacing overscore, U+203E NEW" }, +{ 8260, "frasl","fraction slash, U+2044 NEW" }, + +{ 8364, "euro", "euro sign, U+20AC NEW" }, + +{ 8465, "image","blackletter capital I = imaginary part, U+2111 ISOamso" }, +{ 8472, "weierp","script capital P = power set = Weierstrass p, U+2118 ISOamso" }, +{ 8476, "real", "blackletter capital R = real part symbol, U+211C ISOamso" }, +{ 8482, "trade","trade mark sign, U+2122 ISOnum" }, +{ 8501, "alefsym","alef symbol = first transfinite cardinal, U+2135 NEW" }, +{ 8592, "larr", "leftwards arrow, U+2190 ISOnum" }, +{ 8593, "uarr", "upwards arrow, U+2191 ISOnum" }, +{ 8594, "rarr", "rightwards arrow, U+2192 ISOnum" }, +{ 8595, "darr", "downwards arrow, U+2193 ISOnum" }, +{ 8596, "harr", "left right arrow, U+2194 ISOamsa" }, +{ 8629, "crarr","downwards arrow with corner leftwards = carriage return, U+21B5 NEW" }, +{ 8656, "lArr", "leftwards double arrow, U+21D0 ISOtech" }, +{ 8657, "uArr", "upwards double arrow, U+21D1 ISOamsa" }, +{ 8658, "rArr", "rightwards double arrow, U+21D2 ISOtech" }, +{ 8659, "dArr", "downwards double arrow, U+21D3 ISOamsa" }, +{ 8660, "hArr", "left right double arrow, U+21D4 ISOamsa" }, + +{ 8704, "forall","for all, U+2200 ISOtech" }, +{ 8706, "part", "partial differential, U+2202 ISOtech" }, +{ 8707, "exist","there exists, U+2203 ISOtech" }, +{ 8709, "empty","empty set = null set = diameter, U+2205 ISOamso" }, +{ 8711, "nabla","nabla = backward difference, U+2207 ISOtech" }, +{ 8712, "isin", "element of, U+2208 ISOtech" }, +{ 8713, "notin","not an element of, U+2209 ISOtech" }, +{ 8715, "ni", "contains as member, U+220B ISOtech" }, +{ 8719, "prod", "n-ary product = product sign, U+220F ISOamsb" }, +{ 8721, "sum", "n-ary summation, U+2211 ISOamsb" }, +{ 8722, "minus","minus sign, U+2212 ISOtech" }, +{ 8727, "lowast","asterisk operator, U+2217 ISOtech" }, +{ 8730, "radic","square root = radical sign, U+221A ISOtech" }, +{ 8733, "prop", "proportional to, U+221D ISOtech" }, +{ 8734, "infin","infinity, U+221E ISOtech" }, +{ 8736, "ang", "angle, U+2220 ISOamso" }, +{ 8743, "and", "logical and = wedge, U+2227 ISOtech" }, +{ 8744, "or", "logical or = vee, U+2228 ISOtech" }, +{ 8745, "cap", "intersection = cap, U+2229 ISOtech" }, +{ 8746, "cup", "union = cup, U+222A ISOtech" }, +{ 8747, "int", "integral, U+222B ISOtech" }, +{ 8756, "there4","therefore, U+2234 ISOtech" }, +{ 8764, "sim", "tilde operator = varies with = similar to, U+223C ISOtech" }, +{ 8773, "cong", "approximately equal to, U+2245 ISOtech" }, +{ 8776, "asymp","almost equal to = asymptotic to, U+2248 ISOamsr" }, +{ 8800, "ne", "not equal to, U+2260 ISOtech" }, +{ 8801, "equiv","identical to, U+2261 ISOtech" }, +{ 8804, "le", "less-than or equal to, U+2264 ISOtech" }, +{ 8805, "ge", "greater-than or equal to, U+2265 ISOtech" }, +{ 8834, "sub", "subset of, U+2282 ISOtech" }, +{ 8835, "sup", "superset of, U+2283 ISOtech" }, +{ 8836, "nsub", "not a subset of, U+2284 ISOamsn" }, +{ 8838, "sube", "subset of or equal to, U+2286 ISOtech" }, +{ 8839, "supe", "superset of or equal to, U+2287 ISOtech" }, +{ 8853, "oplus","circled plus = direct sum, U+2295 ISOamsb" }, +{ 8855, "otimes","circled times = vector product, U+2297 ISOamsb" }, +{ 8869, "perp", "up tack = orthogonal to = perpendicular, U+22A5 ISOtech" }, +{ 8901, "sdot", "dot operator, U+22C5 ISOamsb" }, +{ 8968, "lceil","left ceiling = apl upstile, U+2308 ISOamsc" }, +{ 8969, "rceil","right ceiling, U+2309 ISOamsc" }, +{ 8970, "lfloor","left floor = apl downstile, U+230A ISOamsc" }, +{ 8971, "rfloor","right floor, U+230B ISOamsc" }, +{ 9001, "lang", "left-pointing angle bracket = bra, U+2329 ISOtech" }, +{ 9002, "rang", "right-pointing angle bracket = ket, U+232A ISOtech" }, +{ 9674, "loz", "lozenge, U+25CA ISOpub" }, + +{ 9824, "spades","black spade suit, U+2660 ISOpub" }, +{ 9827, "clubs","black club suit = shamrock, U+2663 ISOpub" }, +{ 9829, "hearts","black heart suit = valentine, U+2665 ISOpub" }, +{ 9830, "diams","black diamond suit, U+2666 ISOpub" }, + +}; + +/************************************************************************ + * * + * Commodity functions to handle entities * + * * + ************************************************************************/ + +/* + * Macro used to grow the current buffer. + */ +#define growBuffer(buffer) { \ + xmlChar *tmp; \ + buffer##_size *= 2; \ + tmp = (xmlChar *) xmlRealloc(buffer, buffer##_size * sizeof(xmlChar)); \ + if (tmp == NULL) { \ + htmlErrMemory(ctxt, "growing buffer\n"); \ + xmlFree(buffer); \ + return(NULL); \ + } \ + buffer = tmp; \ +} + +/** + * htmlEntityLookup: + * @name: the entity name + * + * Lookup the given entity in EntitiesTable + * + * TODO: the linear scan is really ugly, an hash table is really needed. + * + * Returns the associated htmlEntityDescPtr if found, NULL otherwise. + */ +const htmlEntityDesc * +htmlEntityLookup(const xmlChar *name) { + unsigned int i; + + for (i = 0;i < (sizeof(html40EntitiesTable)/ + sizeof(html40EntitiesTable[0]));i++) { + if (xmlStrEqual(name, BAD_CAST html40EntitiesTable[i].name)) { + return((htmlEntityDescPtr) &html40EntitiesTable[i]); + } + } + return(NULL); +} + +/** + * htmlEntityValueLookup: + * @value: the entity's unicode value + * + * Lookup the given entity in EntitiesTable + * + * TODO: the linear scan is really ugly, an hash table is really needed. + * + * Returns the associated htmlEntityDescPtr if found, NULL otherwise. + */ +const htmlEntityDesc * +htmlEntityValueLookup(unsigned int value) { + unsigned int i; + + for (i = 0;i < (sizeof(html40EntitiesTable)/ + sizeof(html40EntitiesTable[0]));i++) { + if (html40EntitiesTable[i].value >= value) { + if (html40EntitiesTable[i].value > value) + break; + return((htmlEntityDescPtr) &html40EntitiesTable[i]); + } + } + return(NULL); +} + +/** + * UTF8ToHtml: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * + * Take a block of UTF-8 chars in and try to convert it to an ASCII + * plus HTML entities block of chars out. + * + * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise + * The value of @inlen after return is the number of octets consumed + * as the return value is positive, else unpredictable. + * The value of @outlen after return is the number of octets consumed. + */ +int +UTF8ToHtml(unsigned char* out, int *outlen, + const unsigned char* in, int *inlen) { + const unsigned char* processed = in; + const unsigned char* outend; + const unsigned char* outstart = out; + const unsigned char* instart = in; + const unsigned char* inend; + unsigned int c, d; + int trailing; + + if ((out == NULL) || (outlen == NULL) || (inlen == NULL)) return(-1); + if (in == NULL) { + /* + * initialization nothing to do + */ + *outlen = 0; + *inlen = 0; + return(0); + } + inend = in + (*inlen); + outend = out + (*outlen); + while (in < inend) { + d = *in++; + if (d < 0x80) { c= d; trailing= 0; } + else if (d < 0xC0) { + /* trailing byte in leading position */ + *outlen = out - outstart; + *inlen = processed - instart; + return(-2); + } else if (d < 0xE0) { c= d & 0x1F; trailing= 1; } + else if (d < 0xF0) { c= d & 0x0F; trailing= 2; } + else if (d < 0xF8) { c= d & 0x07; trailing= 3; } + else { + /* no chance for this in Ascii */ + *outlen = out - outstart; + *inlen = processed - instart; + return(-2); + } + + if (inend - in < trailing) { + break; + } + + for ( ; trailing; trailing--) { + if ((in >= inend) || (((d= *in++) & 0xC0) != 0x80)) + break; + c <<= 6; + c |= d & 0x3F; + } + + /* assertion: c is a single UTF-4 value */ + if (c < 0x80) { + if (out + 1 >= outend) + break; + *out++ = c; + } else { + int len; + const htmlEntityDesc * ent; + const char *cp; + char nbuf[16]; + + /* + * Try to lookup a predefined HTML entity for it + */ + + ent = htmlEntityValueLookup(c); + if (ent == NULL) { + snprintf(nbuf, sizeof(nbuf), "#%u", c); + cp = nbuf; + } + else + cp = ent->name; + len = strlen(cp); + if (out + 2 + len >= outend) + break; + *out++ = '&'; + memcpy(out, cp, len); + out += len; + *out++ = ';'; + } + processed = in; + } + *outlen = out - outstart; + *inlen = processed - instart; + return(0); +} + +/** + * htmlEncodeEntities: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * @quoteChar: the quote character to escape (' or ") or zero. + * + * Take a block of UTF-8 chars in and try to convert it to an ASCII + * plus HTML entities block of chars out. + * + * Returns 0 if success, -2 if the transcoding fails, or -1 otherwise + * The value of @inlen after return is the number of octets consumed + * as the return value is positive, else unpredictable. + * The value of @outlen after return is the number of octets consumed. + */ +int +htmlEncodeEntities(unsigned char* out, int *outlen, + const unsigned char* in, int *inlen, int quoteChar) { + const unsigned char* processed = in; + const unsigned char* outend; + const unsigned char* outstart = out; + const unsigned char* instart = in; + const unsigned char* inend; + unsigned int c, d; + int trailing; + + if ((out == NULL) || (outlen == NULL) || (inlen == NULL) || (in == NULL)) + return(-1); + outend = out + (*outlen); + inend = in + (*inlen); + while (in < inend) { + d = *in++; + if (d < 0x80) { c= d; trailing= 0; } + else if (d < 0xC0) { + /* trailing byte in leading position */ + *outlen = out - outstart; + *inlen = processed - instart; + return(-2); + } else if (d < 0xE0) { c= d & 0x1F; trailing= 1; } + else if (d < 0xF0) { c= d & 0x0F; trailing= 2; } + else if (d < 0xF8) { c= d & 0x07; trailing= 3; } + else { + /* no chance for this in Ascii */ + *outlen = out - outstart; + *inlen = processed - instart; + return(-2); + } + + if (inend - in < trailing) + break; + + while (trailing--) { + if (((d= *in++) & 0xC0) != 0x80) { + *outlen = out - outstart; + *inlen = processed - instart; + return(-2); + } + c <<= 6; + c |= d & 0x3F; + } + + /* assertion: c is a single UTF-4 value */ + if ((c < 0x80) && (c != (unsigned int) quoteChar) && + (c != '&') && (c != '<') && (c != '>')) { + if (out >= outend) + break; + *out++ = c; + } else { + const htmlEntityDesc * ent; + const char *cp; + char nbuf[16]; + int len; + + /* + * Try to lookup a predefined HTML entity for it + */ + ent = htmlEntityValueLookup(c); + if (ent == NULL) { + snprintf(nbuf, sizeof(nbuf), "#%u", c); + cp = nbuf; + } + else + cp = ent->name; + len = strlen(cp); + if (out + 2 + len > outend) + break; + *out++ = '&'; + memcpy(out, cp, len); + out += len; + *out++ = ';'; + } + processed = in; + } + *outlen = out - outstart; + *inlen = processed - instart; + return(0); +} + +/************************************************************************ + * * + * Commodity functions to handle streams * + * * + ************************************************************************/ + +/** + * htmlNewInputStream: + * @ctxt: an HTML parser context + * + * Create a new input stream structure + * Returns the new input stream or NULL + */ +static htmlParserInputPtr +htmlNewInputStream(htmlParserCtxtPtr ctxt) { + htmlParserInputPtr input; + + input = (xmlParserInputPtr) xmlMalloc(sizeof(htmlParserInput)); + if (input == NULL) { + htmlErrMemory(ctxt, "couldn't allocate a new input stream\n"); + return(NULL); + } + memset(input, 0, sizeof(htmlParserInput)); + input->filename = NULL; + input->directory = NULL; + input->base = NULL; + input->cur = NULL; + input->buf = NULL; + input->line = 1; + input->col = 1; + input->buf = NULL; + input->free = NULL; + input->version = NULL; + input->consumed = 0; + input->length = 0; + return(input); +} + + +/************************************************************************ + * * + * Commodity functions, cleanup needed ? * + * * + ************************************************************************/ +/* + * all tags allowing pc data from the html 4.01 loose dtd + * NOTE: it might be more apropriate to integrate this information + * into the html40ElementTable array but I don't want to risk any + * binary incomptibility + */ +static const char *allowPCData[] = { + "a", "abbr", "acronym", "address", "applet", "b", "bdo", "big", + "blockquote", "body", "button", "caption", "center", "cite", "code", + "dd", "del", "dfn", "div", "dt", "em", "font", "form", "h1", "h2", + "h3", "h4", "h5", "h6", "i", "iframe", "ins", "kbd", "label", "legend", + "li", "noframes", "noscript", "object", "p", "pre", "q", "s", "samp", + "small", "span", "strike", "strong", "td", "th", "tt", "u", "var" +}; + +/** + * areBlanks: + * @ctxt: an HTML parser context + * @str: a xmlChar * + * @len: the size of @str + * + * Is this a sequence of blank chars that one can ignore ? + * + * Returns 1 if ignorable 0 otherwise. + */ + +static int areBlanks(htmlParserCtxtPtr ctxt, const xmlChar *str, int len) { + unsigned int i; + int j; + xmlNodePtr lastChild; + xmlDtdPtr dtd; + + for (j = 0;j < len;j++) + if (!(IS_BLANK_CH(str[j]))) return(0); + + if (CUR == 0) return(1); + if (CUR != '<') return(0); + if (ctxt->name == NULL) + return(1); + if (xmlStrEqual(ctxt->name, BAD_CAST"html")) + return(1); + if (xmlStrEqual(ctxt->name, BAD_CAST"head")) + return(1); + + /* Only strip CDATA children of the body tag for strict HTML DTDs */ + if (xmlStrEqual(ctxt->name, BAD_CAST "body") && ctxt->myDoc != NULL) { + dtd = xmlGetIntSubset(ctxt->myDoc); + if (dtd != NULL && dtd->ExternalID != NULL) { + if (!xmlStrcasecmp(dtd->ExternalID, BAD_CAST "-//W3C//DTD HTML 4.01//EN") || + !xmlStrcasecmp(dtd->ExternalID, BAD_CAST "-//W3C//DTD HTML 4//EN")) + return(1); + } + } + + if (ctxt->node == NULL) return(0); + lastChild = xmlGetLastChild(ctxt->node); + while ((lastChild) && (lastChild->type == XML_COMMENT_NODE)) + lastChild = lastChild->prev; + if (lastChild == NULL) { + if ((ctxt->node->type != XML_ELEMENT_NODE) && + (ctxt->node->content != NULL)) return(0); + /* keep ws in constructs like ...<b> </b>... + for all tags "b" allowing PCDATA */ + for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { + if ( xmlStrEqual(ctxt->name, BAD_CAST allowPCData[i]) ) { + return(0); + } + } + } else if (xmlNodeIsText(lastChild)) { + return(0); + } else { + /* keep ws in constructs like <p><b>xy</b> <i>z</i><p> + for all tags "p" allowing PCDATA */ + for ( i = 0; i < sizeof(allowPCData)/sizeof(allowPCData[0]); i++ ) { + if ( xmlStrEqual(lastChild->name, BAD_CAST allowPCData[i]) ) { + return(0); + } + } + } + return(1); +} + +/** + * htmlNewDocNoDtD: + * @URI: URI for the dtd, or NULL + * @ExternalID: the external ID of the DTD, or NULL + * + * Creates a new HTML document without a DTD node if @URI and @ExternalID + * are NULL + * + * Returns a new document, do not initialize the DTD if not provided + */ +htmlDocPtr +htmlNewDocNoDtD(const xmlChar *URI, const xmlChar *ExternalID) { + xmlDocPtr cur; + + /* + * Allocate a new document and fill the fields. + */ + cur = (xmlDocPtr) xmlMalloc(sizeof(xmlDoc)); + if (cur == NULL) { + htmlErrMemory(NULL, "HTML document creation failed\n"); + return(NULL); + } + memset(cur, 0, sizeof(xmlDoc)); + + cur->type = XML_HTML_DOCUMENT_NODE; + cur->version = NULL; + cur->intSubset = NULL; + cur->doc = cur; + cur->name = NULL; + cur->children = NULL; + cur->extSubset = NULL; + cur->oldNs = NULL; + cur->encoding = NULL; + cur->standalone = 1; + cur->compression = 0; + cur->ids = NULL; + cur->refs = NULL; + cur->_private = NULL; + cur->charset = XML_CHAR_ENCODING_UTF8; + cur->properties = XML_DOC_HTML | XML_DOC_USERBUILT; + if ((ExternalID != NULL) || + (URI != NULL)) + xmlCreateIntSubset(cur, BAD_CAST "html", ExternalID, URI); + return(cur); +} + +/** + * htmlNewDoc: + * @URI: URI for the dtd, or NULL + * @ExternalID: the external ID of the DTD, or NULL + * + * Creates a new HTML document + * + * Returns a new document + */ +htmlDocPtr +htmlNewDoc(const xmlChar *URI, const xmlChar *ExternalID) { + if ((URI == NULL) && (ExternalID == NULL)) + return(htmlNewDocNoDtD( + BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd", + BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN")); + + return(htmlNewDocNoDtD(URI, ExternalID)); +} + + +/************************************************************************ + * * + * The parser itself * + * Relates to http://www.w3.org/TR/html40 * + * * + ************************************************************************/ + +/************************************************************************ + * * + * The parser itself * + * * + ************************************************************************/ + +static const xmlChar * htmlParseNameComplex(xmlParserCtxtPtr ctxt); + +/** + * htmlParseHTMLName: + * @ctxt: an HTML parser context + * + * parse an HTML tag or attribute name, note that we convert it to lowercase + * since HTML names are not case-sensitive. + * + * Returns the Tag Name parsed or NULL + */ + +static const xmlChar * +htmlParseHTMLName(htmlParserCtxtPtr ctxt) { + int i = 0; + xmlChar loc[HTML_PARSER_BUFFER_SIZE]; + + if (!IS_ASCII_LETTER(CUR) && (CUR != '_') && + (CUR != ':') && (CUR != '.')) return(NULL); + + while ((i < HTML_PARSER_BUFFER_SIZE) && + ((IS_ASCII_LETTER(CUR)) || (IS_ASCII_DIGIT(CUR)) || + (CUR == ':') || (CUR == '-') || (CUR == '_') || + (CUR == '.'))) { + if ((CUR >= 'A') && (CUR <= 'Z')) loc[i] = CUR + 0x20; + else loc[i] = CUR; + i++; + + NEXT; + } + + return(xmlDictLookup(ctxt->dict, loc, i)); +} + + +/** + * htmlParseHTMLName_nonInvasive: + * @ctxt: an HTML parser context + * + * parse an HTML tag or attribute name, note that we convert it to lowercase + * since HTML names are not case-sensitive, this doesn't consume the data + * from the stream, it's a look-ahead + * + * Returns the Tag Name parsed or NULL + */ + +static const xmlChar * +htmlParseHTMLName_nonInvasive(htmlParserCtxtPtr ctxt) { + int i = 0; + xmlChar loc[HTML_PARSER_BUFFER_SIZE]; + + if (!IS_ASCII_LETTER(NXT(1)) && (NXT(1) != '_') && + (NXT(1) != ':')) return(NULL); + + while ((i < HTML_PARSER_BUFFER_SIZE) && + ((IS_ASCII_LETTER(NXT(1+i))) || (IS_ASCII_DIGIT(NXT(1+i))) || + (NXT(1+i) == ':') || (NXT(1+i) == '-') || (NXT(1+i) == '_'))) { + if ((NXT(1+i) >= 'A') && (NXT(1+i) <= 'Z')) loc[i] = NXT(1+i) + 0x20; + else loc[i] = NXT(1+i); + i++; + } + + return(xmlDictLookup(ctxt->dict, loc, i)); +} + + +/** + * htmlParseName: + * @ctxt: an HTML parser context + * + * parse an HTML name, this routine is case sensitive. + * + * Returns the Name parsed or NULL + */ + +static const xmlChar * +htmlParseName(htmlParserCtxtPtr ctxt) { + const xmlChar *in; + const xmlChar *ret; + int count = 0; + + GROW; + + /* + * Accelerator for simple ASCII names + */ + in = ctxt->input->cur; + if (((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + (*in == '_') || (*in == ':')) { + in++; + while (((*in >= 0x61) && (*in <= 0x7A)) || + ((*in >= 0x41) && (*in <= 0x5A)) || + ((*in >= 0x30) && (*in <= 0x39)) || + (*in == '_') || (*in == '-') || + (*in == ':') || (*in == '.')) + in++; + if ((*in > 0) && (*in < 0x80)) { + count = in - ctxt->input->cur; + ret = xmlDictLookup(ctxt->dict, ctxt->input->cur, count); + ctxt->input->cur = in; + ctxt->nbChars += count; + ctxt->input->col += count; + return(ret); + } + } + return(htmlParseNameComplex(ctxt)); +} + +static const xmlChar * +htmlParseNameComplex(xmlParserCtxtPtr ctxt) { + int len = 0, l; + int c; + int count = 0; + + /* + * Handler for more complex cases + */ + GROW; + c = CUR_CHAR(l); + if ((c == ' ') || (c == '>') || (c == '/') || /* accelerators */ + (!IS_LETTER(c) && (c != '_') && + (c != ':'))) { + return(NULL); + } + + while ((c != ' ') && (c != '>') && (c != '/') && /* test bigname.xml */ + ((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':') || + (IS_COMBINING(c)) || + (IS_EXTENDER(c)))) { + if (count++ > 100) { + count = 0; + GROW; + } + len += l; + NEXTL(l); + c = CUR_CHAR(l); + } + return(xmlDictLookup(ctxt->dict, ctxt->input->cur - len, len)); +} + + +/** + * htmlParseHTMLAttribute: + * @ctxt: an HTML parser context + * @stop: a char stop value + * + * parse an HTML attribute value till the stop (quote), if + * stop is 0 then it stops at the first space + * + * Returns the attribute parsed or NULL + */ + +static xmlChar * +htmlParseHTMLAttribute(htmlParserCtxtPtr ctxt, const xmlChar stop) { + xmlChar *buffer = NULL; + int buffer_size = 0; + xmlChar *out = NULL; + const xmlChar *name = NULL; + const xmlChar *cur = NULL; + const htmlEntityDesc * ent; + + /* + * allocate a translation buffer. + */ + buffer_size = HTML_PARSER_BUFFER_SIZE; + buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar)); + if (buffer == NULL) { + htmlErrMemory(ctxt, "buffer allocation failed\n"); + return(NULL); + } + out = buffer; + + /* + * Ok loop until we reach one of the ending chars + */ + while ((CUR != 0) && (CUR != stop)) { + if ((stop == 0) && (CUR == '>')) break; + if ((stop == 0) && (IS_BLANK_CH(CUR))) break; + if (CUR == '&') { + if (NXT(1) == '#') { + unsigned int c; + int bits; + + c = htmlParseCharRef(ctxt); + if (c < 0x80) + { *out++ = c; bits= -6; } + else if (c < 0x800) + { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } + else if (c < 0x10000) + { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } + else + { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } + + for ( ; bits >= 0; bits-= 6) { + *out++ = ((c >> bits) & 0x3F) | 0x80; + } + + if (out - buffer > buffer_size - 100) { + int indx = out - buffer; + + growBuffer(buffer); + out = &buffer[indx]; + } + } else { + ent = htmlParseEntityRef(ctxt, &name); + if (name == NULL) { + *out++ = '&'; + if (out - buffer > buffer_size - 100) { + int indx = out - buffer; + + growBuffer(buffer); + out = &buffer[indx]; + } + } else if (ent == NULL) { + *out++ = '&'; + cur = name; + while (*cur != 0) { + if (out - buffer > buffer_size - 100) { + int indx = out - buffer; + + growBuffer(buffer); + out = &buffer[indx]; + } + *out++ = *cur++; + } + } else { + unsigned int c; + int bits; + + if (out - buffer > buffer_size - 100) { + int indx = out - buffer; + + growBuffer(buffer); + out = &buffer[indx]; + } + c = ent->value; + if (c < 0x80) + { *out++ = c; bits= -6; } + else if (c < 0x800) + { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } + else if (c < 0x10000) + { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } + else + { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } + + for ( ; bits >= 0; bits-= 6) { + *out++ = ((c >> bits) & 0x3F) | 0x80; + } + } + } + } else { + unsigned int c; + int bits, l; + + if (out - buffer > buffer_size - 100) { + int indx = out - buffer; + + growBuffer(buffer); + out = &buffer[indx]; + } + c = CUR_CHAR(l); + if (c < 0x80) + { *out++ = c; bits= -6; } + else if (c < 0x800) + { *out++ =((c >> 6) & 0x1F) | 0xC0; bits= 0; } + else if (c < 0x10000) + { *out++ =((c >> 12) & 0x0F) | 0xE0; bits= 6; } + else + { *out++ =((c >> 18) & 0x07) | 0xF0; bits= 12; } + + for ( ; bits >= 0; bits-= 6) { + *out++ = ((c >> bits) & 0x3F) | 0x80; + } + NEXT; + } + } + *out = 0; + return(buffer); +} + +/** + * htmlParseEntityRef: + * @ctxt: an HTML parser context + * @str: location to store the entity name + * + * parse an HTML ENTITY references + * + * [68] EntityRef ::= '&' Name ';' + * + * Returns the associated htmlEntityDescPtr if found, or NULL otherwise, + * if non-NULL *str will have to be freed by the caller. + */ +const htmlEntityDesc * +htmlParseEntityRef(htmlParserCtxtPtr ctxt, const xmlChar **str) { + const xmlChar *name; + const htmlEntityDesc * ent = NULL; + + if (str != NULL) *str = NULL; + if ((ctxt == NULL) || (ctxt->input == NULL)) return(NULL); + + if (CUR == '&') { + NEXT; + name = htmlParseName(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "htmlParseEntityRef: no name\n", NULL, NULL); + } else { + GROW; + if (CUR == ';') { + if (str != NULL) + *str = name; + + /* + * Lookup the entity in the table. + */ + ent = htmlEntityLookup(name); + if (ent != NULL) /* OK that's ugly !!! */ + NEXT; + } else { + htmlParseErr(ctxt, XML_ERR_ENTITYREF_SEMICOL_MISSING, + "htmlParseEntityRef: expecting ';'\n", + NULL, NULL); + if (str != NULL) + *str = name; + } + } + } + return(ent); +} + +/** + * htmlParseAttValue: + * @ctxt: an HTML parser context + * + * parse a value for an attribute + * Note: the parser won't do substitution of entities here, this + * will be handled later in xmlStringGetNodeList, unless it was + * asked for ctxt->replaceEntities != 0 + * + * Returns the AttValue parsed or NULL. + */ + +static xmlChar * +htmlParseAttValue(htmlParserCtxtPtr ctxt) { + xmlChar *ret = NULL; + + if (CUR == '"') { + NEXT; + ret = htmlParseHTMLAttribute(ctxt, '"'); + if (CUR != '"') { + htmlParseErr(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue: \" expected\n", NULL, NULL); + } else + NEXT; + } else if (CUR == '\'') { + NEXT; + ret = htmlParseHTMLAttribute(ctxt, '\''); + if (CUR != '\'') { + htmlParseErr(ctxt, XML_ERR_ATTRIBUTE_NOT_FINISHED, + "AttValue: ' expected\n", NULL, NULL); + } else + NEXT; + } else { + /* + * That's an HTMLism, the attribute value may not be quoted + */ + ret = htmlParseHTMLAttribute(ctxt, 0); + if (ret == NULL) { + htmlParseErr(ctxt, XML_ERR_ATTRIBUTE_WITHOUT_VALUE, + "AttValue: no value found\n", NULL, NULL); + } + } + return(ret); +} + +/** + * htmlParseSystemLiteral: + * @ctxt: an HTML parser context + * + * parse an HTML Literal + * + * [11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'") + * + * Returns the SystemLiteral parsed or NULL + */ + +static xmlChar * +htmlParseSystemLiteral(htmlParserCtxtPtr ctxt) { + const xmlChar *q; + xmlChar *ret = NULL; + + if (CUR == '"') { + NEXT; + q = CUR_PTR; + while ((IS_CHAR_CH(CUR)) && (CUR != '"')) + NEXT; + if (!IS_CHAR_CH(CUR)) { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED, + "Unfinished SystemLiteral\n", NULL, NULL); + } else { + ret = xmlStrndup(q, CUR_PTR - q); + NEXT; + } + } else if (CUR == '\'') { + NEXT; + q = CUR_PTR; + while ((IS_CHAR_CH(CUR)) && (CUR != '\'')) + NEXT; + if (!IS_CHAR_CH(CUR)) { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED, + "Unfinished SystemLiteral\n", NULL, NULL); + } else { + ret = xmlStrndup(q, CUR_PTR - q); + NEXT; + } + } else { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, + " or ' expected\n", NULL, NULL); + } + + return(ret); +} + +/** + * htmlParsePubidLiteral: + * @ctxt: an HTML parser context + * + * parse an HTML public literal + * + * [12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'" + * + * Returns the PubidLiteral parsed or NULL. + */ + +static xmlChar * +htmlParsePubidLiteral(htmlParserCtxtPtr ctxt) { + const xmlChar *q; + xmlChar *ret = NULL; + /* + * Name ::= (Letter | '_') (NameChar)* + */ + if (CUR == '"') { + NEXT; + q = CUR_PTR; + while (IS_PUBIDCHAR_CH(CUR)) NEXT; + if (CUR != '"') { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED, + "Unfinished PubidLiteral\n", NULL, NULL); + } else { + ret = xmlStrndup(q, CUR_PTR - q); + NEXT; + } + } else if (CUR == '\'') { + NEXT; + q = CUR_PTR; + while ((IS_PUBIDCHAR_CH(CUR)) && (CUR != '\'')) + NEXT; + if (CUR != '\'') { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_FINISHED, + "Unfinished PubidLiteral\n", NULL, NULL); + } else { + ret = xmlStrndup(q, CUR_PTR - q); + NEXT; + } + } else { + htmlParseErr(ctxt, XML_ERR_LITERAL_NOT_STARTED, + "PubidLiteral \" or ' expected\n", NULL, NULL); + } + + return(ret); +} + +/** + * htmlParseScript: + * @ctxt: an HTML parser context + * + * parse the content of an HTML SCRIPT or STYLE element + * http://www.w3.org/TR/html4/sgml/dtd.html#Script + * http://www.w3.org/TR/html4/sgml/dtd.html#StyleSheet + * http://www.w3.org/TR/html4/types.html#type-script + * http://www.w3.org/TR/html4/types.html#h-6.15 + * http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2.1 + * + * Script data ( %Script; in the DTD) can be the content of the SCRIPT + * element and the value of intrinsic event attributes. User agents must + * not evaluate script data as HTML markup but instead must pass it on as + * data to a script engine. + * NOTES: + * - The content is passed like CDATA + * - the attributes for style and scripting "onXXX" are also described + * as CDATA but SGML allows entities references in attributes so their + * processing is identical as other attributes + */ +static void +htmlParseScript(htmlParserCtxtPtr ctxt) { + xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5]; + int nbchar = 0; + int cur,l; + + SHRINK; + cur = CUR_CHAR(l); + while (IS_CHAR_CH(cur)) { + if ((cur == '<') && (NXT(1) == '/')) { + /* + * One should break here, the specification is clear: + * Authors should therefore escape "</" within the content. + * Escape mechanisms are specific to each scripting or + * style sheet language. + * + * In recovery mode, only break if end tag match the + * current tag, effectively ignoring all tags inside the + * script/style block and treating the entire block as + * CDATA. + */ + if (ctxt->recovery) { + if (xmlStrncasecmp(ctxt->name, ctxt->input->cur+2, + xmlStrlen(ctxt->name)) == 0) + { + break; /* while */ + } else { + htmlParseErr(ctxt, XML_ERR_TAG_NAME_MISMATCH, + "Element %s embeds close tag\n", + ctxt->name, NULL); + } + } else { + if (((NXT(2) >= 'A') && (NXT(2) <= 'Z')) || + ((NXT(2) >= 'a') && (NXT(2) <= 'z'))) + { + break; /* while */ + } + } + } + COPY_BUF(l,buf,nbchar,cur); + if (nbchar >= HTML_PARSER_BIG_BUFFER_SIZE) { + if (ctxt->sax->cdataBlock!= NULL) { + /* + * Insert as CDATA, which is the same as HTML_PRESERVE_NODE + */ + ctxt->sax->cdataBlock(ctxt->userData, buf, nbchar); + } else if (ctxt->sax->characters != NULL) { + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } + nbchar = 0; + } + GROW; + NEXTL(l); + cur = CUR_CHAR(l); + } + + if ((!(IS_CHAR_CH(cur))) && (!((cur == 0) && (ctxt->progressive)))) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + NEXT; + } + + if ((nbchar != 0) && (ctxt->sax != NULL) && (!ctxt->disableSAX)) { + if (ctxt->sax->cdataBlock!= NULL) { + /* + * Insert as CDATA, which is the same as HTML_PRESERVE_NODE + */ + ctxt->sax->cdataBlock(ctxt->userData, buf, nbchar); + } else if (ctxt->sax->characters != NULL) { + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } + } +} + + +/** + * htmlParseCharData: + * @ctxt: an HTML parser context + * + * parse a CharData section. + * if we are within a CDATA section ']]>' marks an end of section. + * + * [14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*) + */ + +static void +htmlParseCharData(htmlParserCtxtPtr ctxt) { + xmlChar buf[HTML_PARSER_BIG_BUFFER_SIZE + 5]; + int nbchar = 0; + int cur, l; + int chunk = 0; + + SHRINK; + cur = CUR_CHAR(l); + while (((cur != '<') || (ctxt->token == '<')) && + ((cur != '&') || (ctxt->token == '&')) && + (cur != 0)) { + if (!(IS_CHAR(cur))) { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "Invalid char in CDATA 0x%X\n", cur); + } else { + COPY_BUF(l,buf,nbchar,cur); + } + if (nbchar >= HTML_PARSER_BIG_BUFFER_SIZE) { + /* + * Ok the segment is to be consumed as chars. + */ + if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { + if (areBlanks(ctxt, buf, nbchar)) { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, + buf, nbchar); + } else { + htmlCheckParagraph(ctxt); + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } + } + nbchar = 0; + } + NEXTL(l); + chunk++; + if (chunk > HTML_PARSER_BUFFER_SIZE) { + chunk = 0; + SHRINK; + GROW; + } + cur = CUR_CHAR(l); + if (cur == 0) { + SHRINK; + GROW; + cur = CUR_CHAR(l); + } + } + if (nbchar != 0) { + buf[nbchar] = 0; + + /* + * Ok the segment is to be consumed as chars. + */ + if ((ctxt->sax != NULL) && (!ctxt->disableSAX)) { + if (areBlanks(ctxt, buf, nbchar)) { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace(ctxt->userData, buf, nbchar); + } else { + htmlCheckParagraph(ctxt); + if (ctxt->sax->characters != NULL) + ctxt->sax->characters(ctxt->userData, buf, nbchar); + } + } + } else { + /* + * Loop detection + */ + if (cur == 0) + ctxt->instate = XML_PARSER_EOF; + } +} + +/** + * htmlParseExternalID: + * @ctxt: an HTML parser context + * @publicID: a xmlChar** receiving PubidLiteral + * + * Parse an External ID or a Public ID + * + * [75] ExternalID ::= 'SYSTEM' S SystemLiteral + * | 'PUBLIC' S PubidLiteral S SystemLiteral + * + * [83] PublicID ::= 'PUBLIC' S PubidLiteral + * + * Returns the function returns SystemLiteral and in the second + * case publicID receives PubidLiteral, is strict is off + * it is possible to return NULL and have publicID set. + */ + +static xmlChar * +htmlParseExternalID(htmlParserCtxtPtr ctxt, xmlChar **publicID) { + xmlChar *URI = NULL; + + if ((UPPER == 'S') && (UPP(1) == 'Y') && + (UPP(2) == 'S') && (UPP(3) == 'T') && + (UPP(4) == 'E') && (UPP(5) == 'M')) { + SKIP(6); + if (!IS_BLANK_CH(CUR)) { + htmlParseErr(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'SYSTEM'\n", NULL, NULL); + } + SKIP_BLANKS; + URI = htmlParseSystemLiteral(ctxt); + if (URI == NULL) { + htmlParseErr(ctxt, XML_ERR_URI_REQUIRED, + "htmlParseExternalID: SYSTEM, no URI\n", NULL, NULL); + } + } else if ((UPPER == 'P') && (UPP(1) == 'U') && + (UPP(2) == 'B') && (UPP(3) == 'L') && + (UPP(4) == 'I') && (UPP(5) == 'C')) { + SKIP(6); + if (!IS_BLANK_CH(CUR)) { + htmlParseErr(ctxt, XML_ERR_SPACE_REQUIRED, + "Space required after 'PUBLIC'\n", NULL, NULL); + } + SKIP_BLANKS; + *publicID = htmlParsePubidLiteral(ctxt); + if (*publicID == NULL) { + htmlParseErr(ctxt, XML_ERR_PUBID_REQUIRED, + "htmlParseExternalID: PUBLIC, no Public Identifier\n", + NULL, NULL); + } + SKIP_BLANKS; + if ((CUR == '"') || (CUR == '\'')) { + URI = htmlParseSystemLiteral(ctxt); + } + } + return(URI); +} + +/** + * xmlParsePI: + * @ctxt: an XML parser context + * + * parse an XML Processing Instruction. + * + * [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' + */ +static void +htmlParsePI(htmlParserCtxtPtr ctxt) { + xmlChar *buf = NULL; + int len = 0; + int size = HTML_PARSER_BUFFER_SIZE; + int cur, l; + const xmlChar *target; + xmlParserInputState state; + int count = 0; + + if ((RAW == '<') && (NXT(1) == '?')) { + state = ctxt->instate; + ctxt->instate = XML_PARSER_PI; + /* + * this is a Processing Instruction. + */ + SKIP(2); + SHRINK; + + /* + * Parse the target name and check for special support like + * namespace. + */ + target = htmlParseName(ctxt); + if (target != NULL) { + if (RAW == '>') { + SKIP(1); + + /* + * SAX: PI detected. + */ + if ((ctxt->sax) && (!ctxt->disableSAX) && + (ctxt->sax->processingInstruction != NULL)) + ctxt->sax->processingInstruction(ctxt->userData, + target, NULL); + ctxt->instate = state; + return; + } + buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); + if (buf == NULL) { + htmlErrMemory(ctxt, NULL); + ctxt->instate = state; + return; + } + cur = CUR; + if (!IS_BLANK(cur)) { + htmlParseErr(ctxt, XML_ERR_SPACE_REQUIRED, + "ParsePI: PI %s space expected\n", target, NULL); + } + SKIP_BLANKS; + cur = CUR_CHAR(l); + while (IS_CHAR(cur) && (cur != '>')) { + if (len + 5 >= size) { + xmlChar *tmp; + + size *= 2; + tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); + if (tmp == NULL) { + htmlErrMemory(ctxt, NULL); + xmlFree(buf); + ctxt->instate = state; + return; + } + buf = tmp; + } + count++; + if (count > 50) { + GROW; + count = 0; + } + COPY_BUF(l,buf,len,cur); + NEXTL(l); + cur = CUR_CHAR(l); + if (cur == 0) { + SHRINK; + GROW; + cur = CUR_CHAR(l); + } + } + buf[len] = 0; + if (cur != '>') { + htmlParseErr(ctxt, XML_ERR_PI_NOT_FINISHED, + "ParsePI: PI %s never end ...\n", target, NULL); + } else { + SKIP(1); + + /* + * SAX: PI detected. + */ + if ((ctxt->sax) && (!ctxt->disableSAX) && + (ctxt->sax->processingInstruction != NULL)) + ctxt->sax->processingInstruction(ctxt->userData, + target, buf); + } + xmlFree(buf); + } else { + htmlParseErr(ctxt, XML_ERR_PI_NOT_STARTED, + "PI is not started correctly", NULL, NULL); + } + ctxt->instate = state; + } +} + +/** + * htmlParseComment: + * @ctxt: an HTML parser context + * + * Parse an XML (SGML) comment <!-- .... --> + * + * [15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' + */ +static void +htmlParseComment(htmlParserCtxtPtr ctxt) { + xmlChar *buf = NULL; + int len; + int size = HTML_PARSER_BUFFER_SIZE; + int q, ql; + int r, rl; + int cur, l; + xmlParserInputState state; + + /* + * Check that there is a comment right here. + */ + if ((RAW != '<') || (NXT(1) != '!') || + (NXT(2) != '-') || (NXT(3) != '-')) return; + + state = ctxt->instate; + ctxt->instate = XML_PARSER_COMMENT; + SHRINK; + SKIP(4); + buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); + if (buf == NULL) { + htmlErrMemory(ctxt, "buffer allocation failed\n"); + ctxt->instate = state; + return; + } + q = CUR_CHAR(ql); + NEXTL(ql); + r = CUR_CHAR(rl); + NEXTL(rl); + cur = CUR_CHAR(l); + len = 0; + while (IS_CHAR(cur) && + ((cur != '>') || + (r != '-') || (q != '-'))) { + if (len + 5 >= size) { + xmlChar *tmp; + + size *= 2; + tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); + if (tmp == NULL) { + xmlFree(buf); + htmlErrMemory(ctxt, "growing buffer failed\n"); + ctxt->instate = state; + return; + } + buf = tmp; + } + COPY_BUF(ql,buf,len,q); + q = r; + ql = rl; + r = cur; + rl = l; + NEXTL(l); + cur = CUR_CHAR(l); + if (cur == 0) { + SHRINK; + GROW; + cur = CUR_CHAR(l); + } + } + buf[len] = 0; + if (!IS_CHAR(cur)) { + htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED, + "Comment not terminated \n<!--%.50s\n", buf, NULL); + xmlFree(buf); + } else { + NEXT; + if ((ctxt->sax != NULL) && (ctxt->sax->comment != NULL) && + (!ctxt->disableSAX)) + ctxt->sax->comment(ctxt->userData, buf); + xmlFree(buf); + } + ctxt->instate = state; +} + +/** + * htmlParseCharRef: + * @ctxt: an HTML parser context + * + * parse Reference declarations + * + * [66] CharRef ::= '&#' [0-9]+ ';' | + * '&#x' [0-9a-fA-F]+ ';' + * + * Returns the value parsed (as an int) + */ +int +htmlParseCharRef(htmlParserCtxtPtr ctxt) { + int val = 0; + + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseCharRef: context error\n", + NULL, NULL); + return(0); + } + if ((CUR == '&') && (NXT(1) == '#') && + ((NXT(2) == 'x') || NXT(2) == 'X')) { + SKIP(3); + while (CUR != ';') { + if ((CUR >= '0') && (CUR <= '9')) + val = val * 16 + (CUR - '0'); + else if ((CUR >= 'a') && (CUR <= 'f')) + val = val * 16 + (CUR - 'a') + 10; + else if ((CUR >= 'A') && (CUR <= 'F')) + val = val * 16 + (CUR - 'A') + 10; + else { + htmlParseErr(ctxt, XML_ERR_INVALID_HEX_CHARREF, + "htmlParseCharRef: missing semicolumn\n", + NULL, NULL); + break; + } + NEXT; + } + if (CUR == ';') + NEXT; + } else if ((CUR == '&') && (NXT(1) == '#')) { + SKIP(2); + while (CUR != ';') { + if ((CUR >= '0') && (CUR <= '9')) + val = val * 10 + (CUR - '0'); + else { + htmlParseErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, + "htmlParseCharRef: missing semicolumn\n", + NULL, NULL); + break; + } + NEXT; + } + if (CUR == ';') + NEXT; + } else { + htmlParseErr(ctxt, XML_ERR_INVALID_CHARREF, + "htmlParseCharRef: invalid value\n", NULL, NULL); + } + /* + * Check the value IS_CHAR ... + */ + if (IS_CHAR(val)) { + return(val); + } else { + htmlParseErrInt(ctxt, XML_ERR_INVALID_CHAR, + "htmlParseCharRef: invalid xmlChar value %d\n", + val); + } + return(0); +} + + +/** + * htmlParseDocTypeDecl: + * @ctxt: an HTML parser context + * + * parse a DOCTYPE declaration + * + * [28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? + * ('[' (markupdecl | PEReference | S)* ']' S?)? '>' + */ + +static void +htmlParseDocTypeDecl(htmlParserCtxtPtr ctxt) { + const xmlChar *name; + xmlChar *ExternalID = NULL; + xmlChar *URI = NULL; + + /* + * We know that '<!DOCTYPE' has been detected. + */ + SKIP(9); + + SKIP_BLANKS; + + /* + * Parse the DOCTYPE name. + */ + name = htmlParseName(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "htmlParseDocTypeDecl : no DOCTYPE name !\n", + NULL, NULL); + } + /* + * Check that upper(name) == "HTML" !!!!!!!!!!!!! + */ + + SKIP_BLANKS; + + /* + * Check for SystemID and ExternalID + */ + URI = htmlParseExternalID(ctxt, &ExternalID); + SKIP_BLANKS; + + /* + * We should be at the end of the DOCTYPE declaration. + */ + if (CUR != '>') { + htmlParseErr(ctxt, XML_ERR_DOCTYPE_NOT_FINISHED, + "DOCTYPE improperly terminated\n", NULL, NULL); + /* We shouldn't try to resynchronize ... */ + } + NEXT; + + /* + * Create or update the document accordingly to the DOCTYPE + */ + if ((ctxt->sax != NULL) && (ctxt->sax->internalSubset != NULL) && + (!ctxt->disableSAX)) + ctxt->sax->internalSubset(ctxt->userData, name, ExternalID, URI); + + /* + * Cleanup, since we don't use all those identifiers + */ + if (URI != NULL) xmlFree(URI); + if (ExternalID != NULL) xmlFree(ExternalID); +} + +/** + * htmlParseAttribute: + * @ctxt: an HTML parser context + * @value: a xmlChar ** used to store the value of the attribute + * + * parse an attribute + * + * [41] Attribute ::= Name Eq AttValue + * + * [25] Eq ::= S? '=' S? + * + * With namespace: + * + * [NS 11] Attribute ::= QName Eq AttValue + * + * Also the case QName == xmlns:??? is handled independently as a namespace + * definition. + * + * Returns the attribute name, and the value in *value. + */ + +static const xmlChar * +htmlParseAttribute(htmlParserCtxtPtr ctxt, xmlChar **value) { + const xmlChar *name; + xmlChar *val = NULL; + + *value = NULL; + name = htmlParseHTMLName(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "error parsing attribute name\n", NULL, NULL); + return(NULL); + } + + /* + * read the value + */ + SKIP_BLANKS; + if (CUR == '=') { + NEXT; + SKIP_BLANKS; + val = htmlParseAttValue(ctxt); + } + + *value = val; + return(name); +} + +/** + * htmlCheckEncoding: + * @ctxt: an HTML parser context + * @attvalue: the attribute value + * + * Checks an http-equiv attribute from a Meta tag to detect + * the encoding + * If a new encoding is detected the parser is switched to decode + * it and pass UTF8 + */ +static void +htmlCheckEncoding(htmlParserCtxtPtr ctxt, const xmlChar *attvalue) { + const xmlChar *encoding; + + if ((ctxt == NULL) || (attvalue == NULL)) + return; + + /* do not change encoding */ + if (ctxt->input->encoding != NULL) + return; + + encoding = xmlStrcasestr(attvalue, BAD_CAST"charset="); + if (encoding != NULL) { + encoding += 8; + } else { + encoding = xmlStrcasestr(attvalue, BAD_CAST"charset ="); + if (encoding != NULL) + encoding += 9; + } + if (encoding != NULL) { + xmlCharEncoding enc; + xmlCharEncodingHandlerPtr handler; + + while ((*encoding == ' ') || (*encoding == '\t')) encoding++; + + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = xmlStrdup(encoding); + + enc = xmlParseCharEncoding((const char *) encoding); + /* + * registered set of known encodings + */ + if (enc != XML_CHAR_ENCODING_ERROR) { + if (((enc == XML_CHAR_ENCODING_UTF16LE) || + (enc == XML_CHAR_ENCODING_UTF16BE) || + (enc == XML_CHAR_ENCODING_UCS4LE) || + (enc == XML_CHAR_ENCODING_UCS4BE)) && + (ctxt->input->buf != NULL) && + (ctxt->input->buf->encoder == NULL)) { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "htmlCheckEncoding: wrong encoding meta\n", + NULL, NULL); + } else { + xmlSwitchEncoding(ctxt, enc); + } + ctxt->charset = XML_CHAR_ENCODING_UTF8; + } else { + /* + * fallback for unknown encodings + */ + handler = xmlFindCharEncodingHandler((const char *) encoding); + if (handler != NULL) { + xmlSwitchToEncoding(ctxt, handler); + ctxt->charset = XML_CHAR_ENCODING_UTF8; + } else { + ctxt->errNo = XML_ERR_UNSUPPORTED_ENCODING; + } + } + + if ((ctxt->input->buf != NULL) && + (ctxt->input->buf->encoder != NULL) && + (ctxt->input->buf->raw != NULL) && + (ctxt->input->buf->buffer != NULL)) { + int nbchars; + int processed; + + /* + * convert as much as possible to the parser reading buffer. + */ + processed = ctxt->input->cur - ctxt->input->base; + xmlBufferShrink(ctxt->input->buf->buffer, processed); + nbchars = xmlCharEncInFunc(ctxt->input->buf->encoder, + ctxt->input->buf->buffer, + ctxt->input->buf->raw); + if (nbchars < 0) { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "htmlCheckEncoding: encoder error\n", + NULL, NULL); + } + ctxt->input->base = + ctxt->input->cur = ctxt->input->buf->buffer->content; + ctxt->input->end = + &ctxt->input->base[ctxt->input->buf->buffer->use]; + } + } +} + +/** + * htmlCheckMeta: + * @ctxt: an HTML parser context + * @atts: the attributes values + * + * Checks an attributes from a Meta tag + */ +static void +htmlCheckMeta(htmlParserCtxtPtr ctxt, const xmlChar **atts) { + int i; + const xmlChar *att, *value; + int http = 0; + const xmlChar *content = NULL; + + if ((ctxt == NULL) || (atts == NULL)) + return; + + i = 0; + att = atts[i++]; + while (att != NULL) { + value = atts[i++]; + if ((value != NULL) && (!xmlStrcasecmp(att, BAD_CAST"http-equiv")) + && (!xmlStrcasecmp(value, BAD_CAST"Content-Type"))) + http = 1; + else if ((value != NULL) && (!xmlStrcasecmp(att, BAD_CAST"content"))) + content = value; + att = atts[i++]; + } + if ((http) && (content != NULL)) + htmlCheckEncoding(ctxt, content); + +} + +/** + * htmlParseStartTag: + * @ctxt: an HTML parser context + * + * parse a start of tag either for rule element or + * EmptyElement. In both case we don't parse the tag closing chars. + * + * [40] STag ::= '<' Name (S Attribute)* S? '>' + * + * [44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>' + * + * With namespace: + * + * [NS 8] STag ::= '<' QName (S Attribute)* S? '>' + * + * [NS 10] EmptyElement ::= '<' QName (S Attribute)* S? '/>' + * + * Returns 0 in case of success, -1 in case of error and 1 if discarded + */ + +static int +htmlParseStartTag(htmlParserCtxtPtr ctxt) { + const xmlChar *name; + const xmlChar *attname; + xmlChar *attvalue; + const xmlChar **atts; + int nbatts = 0; + int maxatts; + int meta = 0; + int i; + int discardtag = 0; + + if (ctxt->instate == XML_PARSER_EOF) + return(-1); + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseStartTag: context error\n", NULL, NULL); + return -1; + } + if (CUR != '<') return -1; + NEXT; + + atts = ctxt->atts; + maxatts = ctxt->maxatts; + + GROW; + name = htmlParseHTMLName(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "htmlParseStartTag: invalid element name\n", + NULL, NULL); + /* Dump the bogus tag like browsers do */ + while ((IS_CHAR_CH(CUR)) && (CUR != '>') && + (ctxt->instate != XML_PARSER_EOF)) + NEXT; + return -1; + } + if (xmlStrEqual(name, BAD_CAST"meta")) + meta = 1; + + /* + * Check for auto-closure of HTML elements. + */ + htmlAutoClose(ctxt, name); + + /* + * Check for implied HTML elements. + */ + htmlCheckImplied(ctxt, name); + + /* + * Avoid html at any level > 0, head at any level != 1 + * or any attempt to recurse body + */ + if ((ctxt->nameNr > 0) && (xmlStrEqual(name, BAD_CAST"html"))) { + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "htmlParseStartTag: misplaced <html> tag\n", + name, NULL); + discardtag = 1; + ctxt->depth++; + } + if ((ctxt->nameNr != 1) && + (xmlStrEqual(name, BAD_CAST"head"))) { + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "htmlParseStartTag: misplaced <head> tag\n", + name, NULL); + discardtag = 1; + ctxt->depth++; + } + if (xmlStrEqual(name, BAD_CAST"body")) { + int indx; + for (indx = 0;indx < ctxt->nameNr;indx++) { + if (xmlStrEqual(ctxt->nameTab[indx], BAD_CAST"body")) { + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "htmlParseStartTag: misplaced <body> tag\n", + name, NULL); + discardtag = 1; + ctxt->depth++; + } + } + } + + /* + * Now parse the attributes, it ends up with the ending + * + * (S Attribute)* S? + */ + SKIP_BLANKS; + while ((IS_CHAR_CH(CUR)) && + (CUR != '>') && + ((CUR != '/') || (NXT(1) != '>'))) { + long cons = ctxt->nbChars; + + GROW; + attname = htmlParseAttribute(ctxt, &attvalue); + if (attname != NULL) { + + /* + * Well formedness requires at most one declaration of an attribute + */ + for (i = 0; i < nbatts;i += 2) { + if (xmlStrEqual(atts[i], attname)) { + htmlParseErr(ctxt, XML_ERR_ATTRIBUTE_REDEFINED, + "Attribute %s redefined\n", attname, NULL); + if (attvalue != NULL) + xmlFree(attvalue); + goto failed; + } + } + + /* + * Add the pair to atts + */ + if (atts == NULL) { + maxatts = 22; /* allow for 10 attrs by default */ + atts = (const xmlChar **) + xmlMalloc(maxatts * sizeof(xmlChar *)); + if (atts == NULL) { + htmlErrMemory(ctxt, NULL); + if (attvalue != NULL) + xmlFree(attvalue); + goto failed; + } + ctxt->atts = atts; + ctxt->maxatts = maxatts; + } else if (nbatts + 4 > maxatts) { + const xmlChar **n; + + maxatts *= 2; + n = (const xmlChar **) xmlRealloc((void *) atts, + maxatts * sizeof(const xmlChar *)); + if (n == NULL) { + htmlErrMemory(ctxt, NULL); + if (attvalue != NULL) + xmlFree(attvalue); + goto failed; + } + atts = n; + ctxt->atts = atts; + ctxt->maxatts = maxatts; + } + atts[nbatts++] = attname; + atts[nbatts++] = attvalue; + atts[nbatts] = NULL; + atts[nbatts + 1] = NULL; + } + else { + if (attvalue != NULL) + xmlFree(attvalue); + /* Dump the bogus attribute string up to the next blank or + * the end of the tag. */ + while ((IS_CHAR_CH(CUR)) && + !(IS_BLANK_CH(CUR)) && (CUR != '>') && + ((CUR != '/') || (NXT(1) != '>'))) + NEXT; + } + +failed: + SKIP_BLANKS; + if (cons == ctxt->nbChars) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseStartTag: problem parsing attributes\n", + NULL, NULL); + break; + } + } + + /* + * Handle specific association to the META tag + */ + if (meta && (nbatts != 0)) + htmlCheckMeta(ctxt, atts); + + /* + * SAX: Start of Element ! + */ + if (!discardtag) { + htmlnamePush(ctxt, name); + if ((ctxt->sax != NULL) && (ctxt->sax->startElement != NULL)) { + if (nbatts != 0) + ctxt->sax->startElement(ctxt->userData, name, atts); + else + ctxt->sax->startElement(ctxt->userData, name, NULL); + } + } + + if (atts != NULL) { + for (i = 1;i < nbatts;i += 2) { + if (atts[i] != NULL) + xmlFree((xmlChar *) atts[i]); + } + } + + return(discardtag); +} + +/** + * htmlParseEndTag: + * @ctxt: an HTML parser context + * + * parse an end of tag + * + * [42] ETag ::= '</' Name S? '>' + * + * With namespace + * + * [NS 9] ETag ::= '</' QName S? '>' + * + * Returns 1 if the current level should be closed. + */ + +static int +htmlParseEndTag(htmlParserCtxtPtr ctxt) +{ + const xmlChar *name; + const xmlChar *oldname; + int i, ret; + + if ((CUR != '<') || (NXT(1) != '/')) { + htmlParseErr(ctxt, XML_ERR_LTSLASH_REQUIRED, + "htmlParseEndTag: '</' not found\n", NULL, NULL); + return (0); + } + SKIP(2); + + name = htmlParseHTMLName(ctxt); + if (name == NULL) + return (0); + /* + * We should definitely be at the ending "S? '>'" part + */ + SKIP_BLANKS; + if ((!IS_CHAR_CH(CUR)) || (CUR != '>')) { + htmlParseErr(ctxt, XML_ERR_GT_REQUIRED, + "End tag : expected '>'\n", NULL, NULL); + if (ctxt->recovery) { + /* + * We're not at the ending > !! + * Error, unless in recover mode where we search forwards + * until we find a > + */ + while (CUR != '\0' && CUR != '>') NEXT; + NEXT; + } + } else + NEXT; + + /* + * if we ignored misplaced tags in htmlParseStartTag don't pop them + * out now. + */ + if ((ctxt->depth > 0) && + (xmlStrEqual(name, BAD_CAST "html") || + xmlStrEqual(name, BAD_CAST "body") || + xmlStrEqual(name, BAD_CAST "head"))) { + ctxt->depth--; + return (0); + } + + /* + * If the name read is not one of the element in the parsing stack + * then return, it's just an error. + */ + for (i = (ctxt->nameNr - 1); i >= 0; i--) { + if (xmlStrEqual(name, ctxt->nameTab[i])) + break; + } + if (i < 0) { + htmlParseErr(ctxt, XML_ERR_TAG_NAME_MISMATCH, + "Unexpected end tag : %s\n", name, NULL); + return (0); + } + + + /* + * Check for auto-closure of HTML elements. + */ + + htmlAutoCloseOnClose(ctxt, name); + + /* + * Well formedness constraints, opening and closing must match. + * With the exception that the autoclose may have popped stuff out + * of the stack. + */ + if (!xmlStrEqual(name, ctxt->name)) { + if ((ctxt->name != NULL) && (!xmlStrEqual(ctxt->name, name))) { + htmlParseErr(ctxt, XML_ERR_TAG_NAME_MISMATCH, + "Opening and ending tag mismatch: %s and %s\n", + name, ctxt->name); + } + } + + /* + * SAX: End of Tag + */ + oldname = ctxt->name; + if ((oldname != NULL) && (xmlStrEqual(oldname, name))) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + ret = 1; + } else { + ret = 0; + } + + return (ret); +} + + +/** + * htmlParseReference: + * @ctxt: an HTML parser context + * + * parse and handle entity references in content, + * this will end-up in a call to character() since this is either a + * CharRef, or a predefined entity. + */ +static void +htmlParseReference(htmlParserCtxtPtr ctxt) { + const htmlEntityDesc * ent; + xmlChar out[6]; + const xmlChar *name; + if (CUR != '&') return; + + if (NXT(1) == '#') { + unsigned int c; + int bits, i = 0; + + c = htmlParseCharRef(ctxt); + if (c == 0) + return; + + if (c < 0x80) { out[i++]= c; bits= -6; } + else if (c < 0x800) { out[i++]=((c >> 6) & 0x1F) | 0xC0; bits= 0; } + else if (c < 0x10000) { out[i++]=((c >> 12) & 0x0F) | 0xE0; bits= 6; } + else { out[i++]=((c >> 18) & 0x07) | 0xF0; bits= 12; } + + for ( ; bits >= 0; bits-= 6) { + out[i++]= ((c >> bits) & 0x3F) | 0x80; + } + out[i] = 0; + + htmlCheckParagraph(ctxt); + if ((ctxt->sax != NULL) && (ctxt->sax->characters != NULL)) + ctxt->sax->characters(ctxt->userData, out, i); + } else { + ent = htmlParseEntityRef(ctxt, &name); + if (name == NULL) { + htmlCheckParagraph(ctxt); + if ((ctxt->sax != NULL) && (ctxt->sax->characters != NULL)) + ctxt->sax->characters(ctxt->userData, BAD_CAST "&", 1); + return; + } + if ((ent == NULL) || !(ent->value > 0)) { + htmlCheckParagraph(ctxt); + if ((ctxt->sax != NULL) && (ctxt->sax->characters != NULL)) { + ctxt->sax->characters(ctxt->userData, BAD_CAST "&", 1); + ctxt->sax->characters(ctxt->userData, name, xmlStrlen(name)); + /* ctxt->sax->characters(ctxt->userData, BAD_CAST ";", 1); */ + } + } else { + unsigned int c; + int bits, i = 0; + + c = ent->value; + if (c < 0x80) + { out[i++]= c; bits= -6; } + else if (c < 0x800) + { out[i++]=((c >> 6) & 0x1F) | 0xC0; bits= 0; } + else if (c < 0x10000) + { out[i++]=((c >> 12) & 0x0F) | 0xE0; bits= 6; } + else + { out[i++]=((c >> 18) & 0x07) | 0xF0; bits= 12; } + + for ( ; bits >= 0; bits-= 6) { + out[i++]= ((c >> bits) & 0x3F) | 0x80; + } + out[i] = 0; + + htmlCheckParagraph(ctxt); + if ((ctxt->sax != NULL) && (ctxt->sax->characters != NULL)) + ctxt->sax->characters(ctxt->userData, out, i); + } + } +} + +/** + * htmlParseContent: + * @ctxt: an HTML parser context + * + * Parse a content: comment, sub-element, reference or text. + * Kept for compatibility with old code + */ + +static void +htmlParseContent(htmlParserCtxtPtr ctxt) { + xmlChar *currentNode; + int depth; + const xmlChar *name; + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + while (1) { + long cons = ctxt->nbChars; + + GROW; + + if (ctxt->instate == XML_PARSER_EOF) + break; + + /* + * Our tag or one of it's parent or children is ending. + */ + if ((CUR == '<') && (NXT(1) == '/')) { + if (htmlParseEndTag(ctxt) && + ((currentNode != NULL) || (ctxt->nameNr == 0))) { + if (currentNode != NULL) + xmlFree(currentNode); + return; + } + continue; /* while */ + } + + else if ((CUR == '<') && + ((IS_ASCII_LETTER(NXT(1))) || + (NXT(1) == '_') || (NXT(1) == ':'))) { + name = htmlParseHTMLName_nonInvasive(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "htmlParseStartTag: invalid element name\n", + NULL, NULL); + /* Dump the bogus tag like browsers do */ + while ((IS_CHAR_CH(CUR)) && (CUR != '>')) + NEXT; + + if (currentNode != NULL) + xmlFree(currentNode); + return; + } + + if (ctxt->name != NULL) { + if (htmlCheckAutoClose(name, ctxt->name) == 1) { + htmlAutoClose(ctxt, name); + continue; + } + } + } + + /* + * Has this node been popped out during parsing of + * the next element + */ + if ((ctxt->nameNr > 0) && (depth >= ctxt->nameNr) && + (!xmlStrEqual(currentNode, ctxt->name))) + { + if (currentNode != NULL) xmlFree(currentNode); + return; + } + + if ((CUR != 0) && ((xmlStrEqual(currentNode, BAD_CAST"script")) || + (xmlStrEqual(currentNode, BAD_CAST"style")))) { + /* + * Handle SCRIPT/STYLE separately + */ + htmlParseScript(ctxt); + } else { + /* + * Sometimes DOCTYPE arrives in the middle of the document + */ + if ((CUR == '<') && (NXT(1) == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "Misplaced DOCTYPE declaration\n", + BAD_CAST "DOCTYPE" , NULL); + htmlParseDocTypeDecl(ctxt); + } + + /* + * First case : a comment + */ + if ((CUR == '<') && (NXT(1) == '!') && + (NXT(2) == '-') && (NXT(3) == '-')) { + htmlParseComment(ctxt); + } + + /* + * Second case : a Processing Instruction. + */ + else if ((CUR == '<') && (NXT(1) == '?')) { + htmlParsePI(ctxt); + } + + /* + * Third case : a sub-element. + */ + else if (CUR == '<') { + htmlParseElement(ctxt); + } + + /* + * Fourth case : a reference. If if has not been resolved, + * parsing returns it's Name, create the node + */ + else if (CUR == '&') { + htmlParseReference(ctxt); + } + + /* + * Fifth case : end of the resource + */ + else if (CUR == 0) { + htmlAutoCloseOnEnd(ctxt); + break; + } + + /* + * Last case, text. Note that References are handled directly. + */ + else { + htmlParseCharData(ctxt); + } + + if (cons == ctxt->nbChars) { + if (ctxt->node != NULL) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "detected an error in element content\n", + NULL, NULL); + } + break; + } + } + GROW; + } + if (currentNode != NULL) xmlFree(currentNode); +} + +/** + * htmlParseElement: + * @ctxt: an HTML parser context + * + * parse an HTML element, this is highly recursive + * this is kept for compatibility with previous code versions + * + * [39] element ::= EmptyElemTag | STag content ETag + * + * [41] Attribute ::= Name Eq AttValue + */ + +void +htmlParseElement(htmlParserCtxtPtr ctxt) { + const xmlChar *name; + xmlChar *currentNode = NULL; + const htmlElemDesc * info; + htmlParserNodeInfo node_info; + int failed; + int depth; + const xmlChar *oldptr; + + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseElement: context error\n", NULL, NULL); + return; + } + + if (ctxt->instate == XML_PARSER_EOF) + return; + + /* Capture start position */ + if (ctxt->record_info) { + node_info.begin_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.begin_line = ctxt->input->line; + } + + failed = htmlParseStartTag(ctxt); + name = ctxt->name; + if ((failed == -1) || (name == NULL)) { + if (CUR == '>') + NEXT; + return; + } + + /* + * Lookup the info for that element. + */ + info = htmlTagLookup(name); + if (info == NULL) { + htmlParseErr(ctxt, XML_HTML_UNKNOWN_TAG, + "Tag %s invalid\n", name, NULL); + } + + /* + * Check for an Empty Element labeled the XML/SGML way + */ + if ((CUR == '/') && (NXT(1) == '>')) { + SKIP(2); + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + return; + } + + if (CUR == '>') { + NEXT; + } else { + htmlParseErr(ctxt, XML_ERR_GT_REQUIRED, + "Couldn't find end of Start Tag %s\n", name, NULL); + + /* + * end of parsing of this node. + */ + if (xmlStrEqual(name, ctxt->name)) { + nodePop(ctxt); + htmlnamePop(ctxt); + } + + /* + * Capture end position and add node + */ + if (ctxt->record_info) { + node_info.end_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.end_line = ctxt->input->line; + node_info.node = ctxt->node; + xmlParserAddNodeInfo(ctxt, &node_info); + } + return; + } + + /* + * Check for an Empty Element from DTD definition + */ + if ((info != NULL) && (info->empty)) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + return; + } + + /* + * Parse the content of the element: + */ + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + while (IS_CHAR_CH(CUR)) { + oldptr = ctxt->input->cur; + htmlParseContent(ctxt); + if (oldptr==ctxt->input->cur) break; + if (ctxt->nameNr < depth) break; + } + + /* + * Capture end position and add node + */ + if ( currentNode != NULL && ctxt->record_info ) { + node_info.end_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.end_line = ctxt->input->line; + node_info.node = ctxt->node; + xmlParserAddNodeInfo(ctxt, &node_info); + } + if (!IS_CHAR_CH(CUR)) { + htmlAutoCloseOnEnd(ctxt); + } + + if (currentNode != NULL) + xmlFree(currentNode); +} + +static void +htmlParserFinishElementParsing(htmlParserCtxtPtr ctxt) { + /* + * Capture end position and add node + */ + if ( ctxt->node != NULL && ctxt->record_info ) { + ctxt->nodeInfo->end_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + ctxt->nodeInfo->end_line = ctxt->input->line; + ctxt->nodeInfo->node = ctxt->node; + xmlParserAddNodeInfo(ctxt, ctxt->nodeInfo); + htmlNodeInfoPop(ctxt); + } + if (!IS_CHAR_CH(CUR)) { + htmlAutoCloseOnEnd(ctxt); + } +} + +/** + * htmlParseElementInternal: + * @ctxt: an HTML parser context + * + * parse an HTML element, new version, non recursive + * + * [39] element ::= EmptyElemTag | STag content ETag + * + * [41] Attribute ::= Name Eq AttValue + */ + +static void +htmlParseElementInternal(htmlParserCtxtPtr ctxt) { + const xmlChar *name; + const htmlElemDesc * info; + htmlParserNodeInfo node_info; + int failed; + + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseElementInternal: context error\n", NULL, NULL); + return; + } + + if (ctxt->instate == XML_PARSER_EOF) + return; + + /* Capture start position */ + if (ctxt->record_info) { + node_info.begin_pos = ctxt->input->consumed + + (CUR_PTR - ctxt->input->base); + node_info.begin_line = ctxt->input->line; + } + + failed = htmlParseStartTag(ctxt); + name = ctxt->name; + if ((failed == -1) || (name == NULL)) { + if (CUR == '>') + NEXT; + return; + } + + /* + * Lookup the info for that element. + */ + info = htmlTagLookup(name); + if (info == NULL) { + htmlParseErr(ctxt, XML_HTML_UNKNOWN_TAG, + "Tag %s invalid\n", name, NULL); + } + + /* + * Check for an Empty Element labeled the XML/SGML way + */ + if ((CUR == '/') && (NXT(1) == '>')) { + SKIP(2); + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + return; + } + + if (CUR == '>') { + NEXT; + } else { + htmlParseErr(ctxt, XML_ERR_GT_REQUIRED, + "Couldn't find end of Start Tag %s\n", name, NULL); + + /* + * end of parsing of this node. + */ + if (xmlStrEqual(name, ctxt->name)) { + nodePop(ctxt); + htmlnamePop(ctxt); + } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); + htmlParserFinishElementParsing(ctxt); + return; + } + + /* + * Check for an Empty Element from DTD definition + */ + if ((info != NULL) && (info->empty)) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + return; + } + + if (ctxt->record_info) + htmlNodeInfoPush(ctxt, &node_info); +} + +/** + * htmlParseContentInternal: + * @ctxt: an HTML parser context + * + * Parse a content: comment, sub-element, reference or text. + * New version for non recursive htmlParseElementInternal + */ + +static void +htmlParseContentInternal(htmlParserCtxtPtr ctxt) { + xmlChar *currentNode; + int depth; + const xmlChar *name; + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + while (1) { + long cons = ctxt->nbChars; + + GROW; + + if (ctxt->instate == XML_PARSER_EOF) + break; + + /* + * Our tag or one of it's parent or children is ending. + */ + if ((CUR == '<') && (NXT(1) == '/')) { + if (htmlParseEndTag(ctxt) && + ((currentNode != NULL) || (ctxt->nameNr == 0))) { + if (currentNode != NULL) + xmlFree(currentNode); + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + } + continue; /* while */ + } + + else if ((CUR == '<') && + ((IS_ASCII_LETTER(NXT(1))) || + (NXT(1) == '_') || (NXT(1) == ':'))) { + name = htmlParseHTMLName_nonInvasive(ctxt); + if (name == NULL) { + htmlParseErr(ctxt, XML_ERR_NAME_REQUIRED, + "htmlParseStartTag: invalid element name\n", + NULL, NULL); + /* Dump the bogus tag like browsers do */ + while ((IS_CHAR_CH(CUR)) && (CUR != '>')) + NEXT; + + htmlParserFinishElementParsing(ctxt); + if (currentNode != NULL) + xmlFree(currentNode); + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + continue; + } + + if (ctxt->name != NULL) { + if (htmlCheckAutoClose(name, ctxt->name) == 1) { + htmlAutoClose(ctxt, name); + continue; + } + } + } + + /* + * Has this node been popped out during parsing of + * the next element + */ + if ((ctxt->nameNr > 0) && (depth >= ctxt->nameNr) && + (!xmlStrEqual(currentNode, ctxt->name))) + { + htmlParserFinishElementParsing(ctxt); + if (currentNode != NULL) xmlFree(currentNode); + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + continue; + } + + if ((CUR != 0) && ((xmlStrEqual(currentNode, BAD_CAST"script")) || + (xmlStrEqual(currentNode, BAD_CAST"style")))) { + /* + * Handle SCRIPT/STYLE separately + */ + htmlParseScript(ctxt); + } else { + /* + * Sometimes DOCTYPE arrives in the middle of the document + */ + if ((CUR == '<') && (NXT(1) == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "Misplaced DOCTYPE declaration\n", + BAD_CAST "DOCTYPE" , NULL); + htmlParseDocTypeDecl(ctxt); + } + + /* + * First case : a comment + */ + if ((CUR == '<') && (NXT(1) == '!') && + (NXT(2) == '-') && (NXT(3) == '-')) { + htmlParseComment(ctxt); + } + + /* + * Second case : a Processing Instruction. + */ + else if ((CUR == '<') && (NXT(1) == '?')) { + htmlParsePI(ctxt); + } + + /* + * Third case : a sub-element. + */ + else if (CUR == '<') { + htmlParseElementInternal(ctxt); + if (currentNode != NULL) xmlFree(currentNode); + + currentNode = xmlStrdup(ctxt->name); + depth = ctxt->nameNr; + } + + /* + * Fourth case : a reference. If if has not been resolved, + * parsing returns it's Name, create the node + */ + else if (CUR == '&') { + htmlParseReference(ctxt); + } + + /* + * Fifth case : end of the resource + */ + else if (CUR == 0) { + htmlAutoCloseOnEnd(ctxt); + break; + } + + /* + * Last case, text. Note that References are handled directly. + */ + else { + htmlParseCharData(ctxt); + } + + if (cons == ctxt->nbChars) { + if (ctxt->node != NULL) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "detected an error in element content\n", + NULL, NULL); + } + break; + } + } + GROW; + } + if (currentNode != NULL) xmlFree(currentNode); +} + +/** + * htmlParseContent: + * @ctxt: an HTML parser context + * + * Parse a content: comment, sub-element, reference or text. + * This is the entry point when called from parser.c + */ + +void +__htmlParseContent(void *ctxt) { + if (ctxt != NULL) + htmlParseContentInternal((htmlParserCtxtPtr) ctxt); +} + +/** + * htmlParseDocument: + * @ctxt: an HTML parser context + * + * parse an HTML document (and build a tree if using the standard SAX + * interface). + * + * Returns 0, -1 in case of error. the parser context is augmented + * as a result of the parsing. + */ + +int +htmlParseDocument(htmlParserCtxtPtr ctxt) { + xmlChar start[4]; + xmlCharEncoding enc; + xmlDtdPtr dtd; + + xmlInitParser(); + + htmlDefaultSAXHandlerInit(); + + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseDocument: context error\n", NULL, NULL); + return(XML_ERR_INTERNAL_ERROR); + } + ctxt->html = 1; + ctxt->linenumbers = 1; + GROW; + /* + * SAX: beginning of the document processing. + */ + if ((ctxt->sax) && (ctxt->sax->setDocumentLocator)) + ctxt->sax->setDocumentLocator(ctxt->userData, &xmlDefaultSAXLocator); + + if ((ctxt->encoding == (const xmlChar *)XML_CHAR_ENCODING_NONE) && + ((ctxt->input->end - ctxt->input->cur) >= 4)) { + /* + * Get the 4 first bytes and decode the charset + * if enc != XML_CHAR_ENCODING_NONE + * plug some encoding conversion routines. + */ + start[0] = RAW; + start[1] = NXT(1); + start[2] = NXT(2); + start[3] = NXT(3); + enc = xmlDetectCharEncoding(&start[0], 4); + if (enc != XML_CHAR_ENCODING_NONE) { + xmlSwitchEncoding(ctxt, enc); + } + } + + /* + * Wipe out everything which is before the first '<' + */ + SKIP_BLANKS; + if (CUR == 0) { + htmlParseErr(ctxt, XML_ERR_DOCUMENT_EMPTY, + "Document is empty\n", NULL, NULL); + } + + if ((ctxt->sax) && (ctxt->sax->startDocument) && (!ctxt->disableSAX)) + ctxt->sax->startDocument(ctxt->userData); + + + /* + * Parse possible comments and PIs before any content + */ + while (((CUR == '<') && (NXT(1) == '!') && + (NXT(2) == '-') && (NXT(3) == '-')) || + ((CUR == '<') && (NXT(1) == '?'))) { + htmlParseComment(ctxt); + htmlParsePI(ctxt); + SKIP_BLANKS; + } + + + /* + * Then possibly doc type declaration(s) and more Misc + * (doctypedecl Misc*)? + */ + if ((CUR == '<') && (NXT(1) == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + htmlParseDocTypeDecl(ctxt); + } + SKIP_BLANKS; + + /* + * Parse possible comments and PIs before any content + */ + while (((CUR == '<') && (NXT(1) == '!') && + (NXT(2) == '-') && (NXT(3) == '-')) || + ((CUR == '<') && (NXT(1) == '?'))) { + htmlParseComment(ctxt); + htmlParsePI(ctxt); + SKIP_BLANKS; + } + + /* + * Time to start parsing the tree itself + */ + htmlParseContentInternal(ctxt); + + /* + * autoclose + */ + if (CUR == 0) + htmlAutoCloseOnEnd(ctxt); + + + /* + * SAX: end of the document processing. + */ + if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) + ctxt->sax->endDocument(ctxt->userData); + + if (ctxt->myDoc != NULL) { + dtd = xmlGetIntSubset(ctxt->myDoc); + if (dtd == NULL) + ctxt->myDoc->intSubset = + xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", + BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN", + BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd"); + } + if (! ctxt->wellFormed) return(-1); + return(0); +} + + +/************************************************************************ + * * + * Parser contexts handling * + * * + ************************************************************************/ + +/** + * htmlInitParserCtxt: + * @ctxt: an HTML parser context + * + * Initialize a parser context + * + * Returns 0 in case of success and -1 in case of error + */ + +static int +htmlInitParserCtxt(htmlParserCtxtPtr ctxt) +{ + htmlSAXHandler *sax; + + if (ctxt == NULL) return(-1); + memset(ctxt, 0, sizeof(htmlParserCtxt)); + + ctxt->dict = xmlDictCreate(); + if (ctxt->dict == NULL) { + htmlErrMemory(NULL, "htmlInitParserCtxt: out of memory\n"); + return(-1); + } + sax = (htmlSAXHandler *) xmlMalloc(sizeof(htmlSAXHandler)); + if (sax == NULL) { + htmlErrMemory(NULL, "htmlInitParserCtxt: out of memory\n"); + return(-1); + } + else + memset(sax, 0, sizeof(htmlSAXHandler)); + + /* Allocate the Input stack */ + ctxt->inputTab = (htmlParserInputPtr *) + xmlMalloc(5 * sizeof(htmlParserInputPtr)); + if (ctxt->inputTab == NULL) { + htmlErrMemory(NULL, "htmlInitParserCtxt: out of memory\n"); + ctxt->inputNr = 0; + ctxt->inputMax = 0; + ctxt->input = NULL; + return(-1); + } + ctxt->inputNr = 0; + ctxt->inputMax = 5; + ctxt->input = NULL; + ctxt->version = NULL; + ctxt->encoding = NULL; + ctxt->standalone = -1; + ctxt->instate = XML_PARSER_START; + + /* Allocate the Node stack */ + ctxt->nodeTab = (htmlNodePtr *) xmlMalloc(10 * sizeof(htmlNodePtr)); + if (ctxt->nodeTab == NULL) { + htmlErrMemory(NULL, "htmlInitParserCtxt: out of memory\n"); + ctxt->nodeNr = 0; + ctxt->nodeMax = 0; + ctxt->node = NULL; + ctxt->inputNr = 0; + ctxt->inputMax = 0; + ctxt->input = NULL; + return(-1); + } + ctxt->nodeNr = 0; + ctxt->nodeMax = 10; + ctxt->node = NULL; + + /* Allocate the Name stack */ + ctxt->nameTab = (const xmlChar **) xmlMalloc(10 * sizeof(xmlChar *)); + if (ctxt->nameTab == NULL) { + htmlErrMemory(NULL, "htmlInitParserCtxt: out of memory\n"); + ctxt->nameNr = 0; + ctxt->nameMax = 0; + ctxt->name = NULL; + ctxt->nodeNr = 0; + ctxt->nodeMax = 0; + ctxt->node = NULL; + ctxt->inputNr = 0; + ctxt->inputMax = 0; + ctxt->input = NULL; + return(-1); + } + ctxt->nameNr = 0; + ctxt->nameMax = 10; + ctxt->name = NULL; + + ctxt->nodeInfoTab = NULL; + ctxt->nodeInfoNr = 0; + ctxt->nodeInfoMax = 0; + + if (sax == NULL) ctxt->sax = (xmlSAXHandlerPtr) &htmlDefaultSAXHandler; + else { + ctxt->sax = sax; + memcpy(sax, &htmlDefaultSAXHandler, sizeof(xmlSAXHandlerV1)); + } + ctxt->userData = ctxt; + ctxt->myDoc = NULL; + ctxt->wellFormed = 1; + ctxt->replaceEntities = 0; + ctxt->linenumbers = xmlLineNumbersDefaultValue; + ctxt->html = 1; + ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_0; + ctxt->vctxt.userData = ctxt; + ctxt->vctxt.error = xmlParserValidityError; + ctxt->vctxt.warning = xmlParserValidityWarning; + ctxt->record_info = 0; + ctxt->validate = 0; + ctxt->nbChars = 0; + ctxt->checkIndex = 0; + ctxt->catalogs = NULL; + xmlInitNodeInfoSeq(&ctxt->node_seq); + return(0); +} + +/** + * htmlFreeParserCtxt: + * @ctxt: an HTML parser context + * + * Free all the memory used by a parser context. However the parsed + * document in ctxt->myDoc is not freed. + */ + +void +htmlFreeParserCtxt(htmlParserCtxtPtr ctxt) +{ + xmlFreeParserCtxt(ctxt); +} + +/** + * htmlNewParserCtxt: + * + * Allocate and initialize a new parser context. + * + * Returns the htmlParserCtxtPtr or NULL in case of allocation error + */ + +htmlParserCtxtPtr +htmlNewParserCtxt(void) +{ + xmlParserCtxtPtr ctxt; + + ctxt = (xmlParserCtxtPtr) xmlMalloc(sizeof(xmlParserCtxt)); + if (ctxt == NULL) { + htmlErrMemory(NULL, "NewParserCtxt: out of memory\n"); + return(NULL); + } + memset(ctxt, 0, sizeof(xmlParserCtxt)); + if (htmlInitParserCtxt(ctxt) < 0) { + htmlFreeParserCtxt(ctxt); + return(NULL); + } + return(ctxt); +} + +/** + * htmlCreateMemoryParserCtxt: + * @buffer: a pointer to a char array + * @size: the size of the array + * + * Create a parser context for an HTML in-memory document. + * + * Returns the new parser context or NULL + */ +htmlParserCtxtPtr +htmlCreateMemoryParserCtxt(const char *buffer, int size) { + xmlParserCtxtPtr ctxt; + xmlParserInputPtr input; + xmlParserInputBufferPtr buf; + + if (buffer == NULL) + return(NULL); + if (size <= 0) + return(NULL); + + ctxt = htmlNewParserCtxt(); + if (ctxt == NULL) + return(NULL); + + buf = xmlParserInputBufferCreateMem(buffer, size, XML_CHAR_ENCODING_NONE); + if (buf == NULL) return(NULL); + + input = xmlNewInputStream(ctxt); + if (input == NULL) { + xmlFreeParserCtxt(ctxt); + return(NULL); + } + + input->filename = NULL; + input->buf = buf; + input->base = input->buf->buffer->content; + input->cur = input->buf->buffer->content; + input->end = &input->buf->buffer->content[input->buf->buffer->use]; + + inputPush(ctxt, input); + return(ctxt); +} + +/** + * htmlCreateDocParserCtxt: + * @cur: a pointer to an array of xmlChar + * @encoding: a free form C string describing the HTML document encoding, or NULL + * + * Create a parser context for an HTML document. + * + * TODO: check the need to add encoding handling there + * + * Returns the new parser context or NULL + */ +static htmlParserCtxtPtr +htmlCreateDocParserCtxt(const xmlChar *cur, const char *encoding) { + int len; + htmlParserCtxtPtr ctxt; + + if (cur == NULL) + return(NULL); + len = xmlStrlen(cur); + ctxt = htmlCreateMemoryParserCtxt((char *)cur, len); + if (ctxt == NULL) + return(NULL); + + if (encoding != NULL) { + xmlCharEncoding enc; + xmlCharEncodingHandlerPtr handler; + + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = xmlStrdup((const xmlChar *) encoding); + + enc = xmlParseCharEncoding(encoding); + /* + * registered set of known encodings + */ + if (enc != XML_CHAR_ENCODING_ERROR) { + xmlSwitchEncoding(ctxt, enc); + if (ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) { + htmlParseErr(ctxt, XML_ERR_UNSUPPORTED_ENCODING, + "Unsupported encoding %s\n", + (const xmlChar *) encoding, NULL); + } + } else { + /* + * fallback for unknown encodings + */ + handler = xmlFindCharEncodingHandler((const char *) encoding); + if (handler != NULL) { + xmlSwitchToEncoding(ctxt, handler); + } else { + htmlParseErr(ctxt, XML_ERR_UNSUPPORTED_ENCODING, + "Unsupported encoding %s\n", + (const xmlChar *) encoding, NULL); + } + } + } + return(ctxt); +} + +#ifdef LIBXML_PUSH_ENABLED +/************************************************************************ + * * + * Progressive parsing interfaces * + * * + ************************************************************************/ + +/** + * htmlParseLookupSequence: + * @ctxt: an HTML parser context + * @first: the first char to lookup + * @next: the next char to lookup or zero + * @third: the next char to lookup or zero + * @comment: flag to force checking inside comments + * + * Try to find if a sequence (first, next, third) or just (first next) or + * (first) is available in the input stream. + * This function has a side effect of (possibly) incrementing ctxt->checkIndex + * to avoid rescanning sequences of bytes, it DOES change the state of the + * parser, do not use liberally. + * This is basically similar to xmlParseLookupSequence() + * + * Returns the index to the current parsing point if the full sequence + * is available, -1 otherwise. + */ +static int +htmlParseLookupSequence(htmlParserCtxtPtr ctxt, xmlChar first, + xmlChar next, xmlChar third, int iscomment, + int ignoreattrval) +{ + int base, len; + htmlParserInputPtr in; + const xmlChar *buf; + int incomment = 0; + int invalue = 0; + char valdellim = 0x0; + + in = ctxt->input; + if (in == NULL) + return (-1); + + base = in->cur - in->base; + if (base < 0) + return (-1); + + if (ctxt->checkIndex > base) + base = ctxt->checkIndex; + + if (in->buf == NULL) { + buf = in->base; + len = in->length; + } else { + buf = in->buf->buffer->content; + len = in->buf->buffer->use; + } + + /* take into account the sequence length */ + if (third) + len -= 2; + else if (next) + len--; + for (; base < len; base++) { + if ((!incomment) && (base + 4 < len) && (!iscomment)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past <! - some people use <!--> */ + base += 2; + } + } + if (ignoreattrval) { + if (buf[base] == '"' || buf[base] == '\'') { + if (invalue) { + if (buf[base] == valdellim) { + invalue = 0; + continue; + } + } else { + valdellim = buf[base]; + invalue = 1; + continue; + } + } else if (invalue) { + continue; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } + if (buf[base] == first) { + if (third != 0) { + if ((buf[base + 1] != next) || (buf[base + 2] != third)) + continue; + } else if (next != 0) { + if (buf[base + 1] != next) + continue; + } + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + if (next == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' found at %d\n", + first, base); + else if (third == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' found at %d\n", + first, next, base); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' found at %d\n", + first, next, third, base); +#endif + return (base - (in->cur - in->base)); + } + } + if ((!incomment) && (!invalue)) + ctxt->checkIndex = base; +#ifdef DEBUG_PUSH + if (next == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c' failed\n", first); + else if (third == 0) + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c' failed\n", first, next); + else + xmlGenericError(xmlGenericErrorContext, + "HPP: lookup '%c%c%c' failed\n", first, next, + third); +#endif + return (-1); +} + +/** + * htmlParseLookupChars: + * @ctxt: an HTML parser context + * @stop: Array of chars, which stop the lookup. + * @stopLen: Length of stop-Array + * + * Try to find if any char of the stop-Array is available in the input + * stream. + * This function has a side effect of (possibly) incrementing ctxt->checkIndex + * to avoid rescanning sequences of bytes, it DOES change the state of the + * parser, do not use liberally. + * + * Returns the index to the current parsing point if a stopChar + * is available, -1 otherwise. + */ +static int +htmlParseLookupChars(htmlParserCtxtPtr ctxt, const xmlChar * stop, + int stopLen) +{ + int base, len; + htmlParserInputPtr in; + const xmlChar *buf; + int incomment = 0; + int i; + + in = ctxt->input; + if (in == NULL) + return (-1); + + base = in->cur - in->base; + if (base < 0) + return (-1); + + if (ctxt->checkIndex > base) + base = ctxt->checkIndex; + + if (in->buf == NULL) { + buf = in->base; + len = in->length; + } else { + buf = in->buf->buffer->content; + len = in->buf->buffer->use; + } + + for (; base < len; base++) { + if (!incomment && (base + 4 < len)) { + if ((buf[base] == '<') && (buf[base + 1] == '!') && + (buf[base + 2] == '-') && (buf[base + 3] == '-')) { + incomment = 1; + /* do not increment past <! - some people use <!--> */ + base += 2; + } + } + if (incomment) { + if (base + 3 > len) + return (-1); + if ((buf[base] == '-') && (buf[base + 1] == '-') && + (buf[base + 2] == '>')) { + incomment = 0; + base += 2; + } + continue; + } + for (i = 0; i < stopLen; ++i) { + if (buf[base] == stop[i]) { + ctxt->checkIndex = 0; + return (base - (in->cur - in->base)); + } + } + } + ctxt->checkIndex = base; + return (-1); +} + +/** + * htmlParseTryOrFinish: + * @ctxt: an HTML parser context + * @terminate: last chunk indicator + * + * Try to progress on parsing + * + * Returns zero if no parsing was possible + */ +static int +htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) { + int ret = 0; + htmlParserInputPtr in; + int avail = 0; + xmlChar cur, next; + +#ifdef DEBUG_PUSH + switch (ctxt->instate) { + case XML_PARSER_EOF: + xmlGenericError(xmlGenericErrorContext, + "HPP: try EOF\n"); break; + case XML_PARSER_START: + xmlGenericError(xmlGenericErrorContext, + "HPP: try START\n"); break; + case XML_PARSER_MISC: + xmlGenericError(xmlGenericErrorContext, + "HPP: try MISC\n");break; + case XML_PARSER_COMMENT: + xmlGenericError(xmlGenericErrorContext, + "HPP: try COMMENT\n");break; + case XML_PARSER_PROLOG: + xmlGenericError(xmlGenericErrorContext, + "HPP: try PROLOG\n");break; + case XML_PARSER_START_TAG: + xmlGenericError(xmlGenericErrorContext, + "HPP: try START_TAG\n");break; + case XML_PARSER_CONTENT: + xmlGenericError(xmlGenericErrorContext, + "HPP: try CONTENT\n");break; + case XML_PARSER_CDATA_SECTION: + xmlGenericError(xmlGenericErrorContext, + "HPP: try CDATA_SECTION\n");break; + case XML_PARSER_END_TAG: + xmlGenericError(xmlGenericErrorContext, + "HPP: try END_TAG\n");break; + case XML_PARSER_ENTITY_DECL: + xmlGenericError(xmlGenericErrorContext, + "HPP: try ENTITY_DECL\n");break; + case XML_PARSER_ENTITY_VALUE: + xmlGenericError(xmlGenericErrorContext, + "HPP: try ENTITY_VALUE\n");break; + case XML_PARSER_ATTRIBUTE_VALUE: + xmlGenericError(xmlGenericErrorContext, + "HPP: try ATTRIBUTE_VALUE\n");break; + case XML_PARSER_DTD: + xmlGenericError(xmlGenericErrorContext, + "HPP: try DTD\n");break; + case XML_PARSER_EPILOG: + xmlGenericError(xmlGenericErrorContext, + "HPP: try EPILOG\n");break; + case XML_PARSER_PI: + xmlGenericError(xmlGenericErrorContext, + "HPP: try PI\n");break; + case XML_PARSER_SYSTEM_LITERAL: + xmlGenericError(xmlGenericErrorContext, + "HPP: try SYSTEM_LITERAL\n");break; + } +#endif + + while (1) { + + in = ctxt->input; + if (in == NULL) break; + if (in->buf == NULL) + avail = in->length - (in->cur - in->base); + else + avail = in->buf->buffer->use - (in->cur - in->base); + if ((avail == 0) && (terminate)) { + htmlAutoCloseOnEnd(ctxt); + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + /* + * SAX: end of the document processing. + */ + ctxt->instate = XML_PARSER_EOF; + if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) + ctxt->sax->endDocument(ctxt->userData); + } + } + if (avail < 1) + goto done; + cur = in->cur[0]; + if (cur == 0) { + SKIP(1); + continue; + } + + switch (ctxt->instate) { + case XML_PARSER_EOF: + /* + * Document parsing is done ! + */ + goto done; + case XML_PARSER_START: + /* + * Very first chars read from the document flow. + */ + cur = in->cur[0]; + if (IS_BLANK_CH(cur)) { + SKIP_BLANKS; + if (in->buf == NULL) + avail = in->length - (in->cur - in->base); + else + avail = in->buf->buffer->use - (in->cur - in->base); + } + if ((ctxt->sax) && (ctxt->sax->setDocumentLocator)) + ctxt->sax->setDocumentLocator(ctxt->userData, + &xmlDefaultSAXLocator); + if ((ctxt->sax) && (ctxt->sax->startDocument) && + (!ctxt->disableSAX)) + ctxt->sax->startDocument(ctxt->userData); + + cur = in->cur[0]; + next = in->cur[1]; + if ((cur == '<') && (next == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing internal subset\n"); +#endif + htmlParseDocTypeDecl(ctxt); + ctxt->instate = XML_PARSER_PROLOG; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering PROLOG\n"); +#endif + } else { + ctxt->instate = XML_PARSER_MISC; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering MISC\n"); +#endif + } + break; + case XML_PARSER_MISC: + SKIP_BLANKS; + if (in->buf == NULL) + avail = in->length - (in->cur - in->base); + else + avail = in->buf->buffer->use - (in->cur - in->base); + if (avail < 2) + goto done; + cur = in->cur[0]; + next = in->cur[1]; + if ((cur == '<') && (next == '!') && + (in->cur[2] == '-') && (in->cur[3] == '-')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing Comment\n"); +#endif + htmlParseComment(ctxt); + ctxt->instate = XML_PARSER_MISC; + } else if ((cur == '<') && (next == '?')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing PI\n"); +#endif + htmlParsePI(ctxt); + ctxt->instate = XML_PARSER_MISC; + } else if ((cur == '<') && (next == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing internal subset\n"); +#endif + htmlParseDocTypeDecl(ctxt); + ctxt->instate = XML_PARSER_PROLOG; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering PROLOG\n"); +#endif + } else if ((cur == '<') && (next == '!') && + (avail < 9)) { + goto done; + } else { + ctxt->instate = XML_PARSER_START_TAG; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering START_TAG\n"); +#endif + } + break; + case XML_PARSER_PROLOG: + SKIP_BLANKS; + if (in->buf == NULL) + avail = in->length - (in->cur - in->base); + else + avail = in->buf->buffer->use - (in->cur - in->base); + if (avail < 2) + goto done; + cur = in->cur[0]; + next = in->cur[1]; + if ((cur == '<') && (next == '!') && + (in->cur[2] == '-') && (in->cur[3] == '-')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing Comment\n"); +#endif + htmlParseComment(ctxt); + ctxt->instate = XML_PARSER_PROLOG; + } else if ((cur == '<') && (next == '?')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing PI\n"); +#endif + htmlParsePI(ctxt); + ctxt->instate = XML_PARSER_PROLOG; + } else if ((cur == '<') && (next == '!') && + (avail < 4)) { + goto done; + } else { + ctxt->instate = XML_PARSER_START_TAG; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering START_TAG\n"); +#endif + } + break; + case XML_PARSER_EPILOG: + if (in->buf == NULL) + avail = in->length - (in->cur - in->base); + else + avail = in->buf->buffer->use - (in->cur - in->base); + if (avail < 1) + goto done; + cur = in->cur[0]; + if (IS_BLANK_CH(cur)) { + htmlParseCharData(ctxt); + goto done; + } + if (avail < 2) + goto done; + next = in->cur[1]; + if ((cur == '<') && (next == '!') && + (in->cur[2] == '-') && (in->cur[3] == '-')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing Comment\n"); +#endif + htmlParseComment(ctxt); + ctxt->instate = XML_PARSER_EPILOG; + } else if ((cur == '<') && (next == '?')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing PI\n"); +#endif + htmlParsePI(ctxt); + ctxt->instate = XML_PARSER_EPILOG; + } else if ((cur == '<') && (next == '!') && + (avail < 4)) { + goto done; + } else { + ctxt->errNo = XML_ERR_DOCUMENT_END; + ctxt->wellFormed = 0; + ctxt->instate = XML_PARSER_EOF; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering EOF\n"); +#endif + if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) + ctxt->sax->endDocument(ctxt->userData); + goto done; + } + break; + case XML_PARSER_START_TAG: { + const xmlChar *name; + int failed; + const htmlElemDesc * info; + + if (avail < 2) + goto done; + cur = in->cur[0]; + if (cur != '<') { + ctxt->instate = XML_PARSER_CONTENT; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + } + if (in->cur[1] == '/') { + ctxt->instate = XML_PARSER_END_TAG; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering END_TAG\n"); +#endif + break; + } + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; + + failed = htmlParseStartTag(ctxt); + name = ctxt->name; + if ((failed == -1) || + (name == NULL)) { + if (CUR == '>') + NEXT; + break; + } + + /* + * Lookup the info for that element. + */ + info = htmlTagLookup(name); + if (info == NULL) { + htmlParseErr(ctxt, XML_HTML_UNKNOWN_TAG, + "Tag %s invalid\n", name, NULL); + } + + /* + * Check for an Empty Element labeled the XML/SGML way + */ + if ((CUR == '/') && (NXT(1) == '>')) { + SKIP(2); + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + ctxt->instate = XML_PARSER_CONTENT; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + } + + if (CUR == '>') { + NEXT; + } else { + htmlParseErr(ctxt, XML_ERR_GT_REQUIRED, + "Couldn't find end of Start Tag %s\n", + name, NULL); + + /* + * end of parsing of this node. + */ + if (xmlStrEqual(name, ctxt->name)) { + nodePop(ctxt); + htmlnamePop(ctxt); + } + + ctxt->instate = XML_PARSER_CONTENT; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + } + + /* + * Check for an Empty Element from DTD definition + */ + if ((info != NULL) && (info->empty)) { + if ((ctxt->sax != NULL) && (ctxt->sax->endElement != NULL)) + ctxt->sax->endElement(ctxt->userData, name); + htmlnamePop(ctxt); + } + ctxt->instate = XML_PARSER_CONTENT; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + } + case XML_PARSER_CONTENT: { + long cons; + /* + * Handle preparsed entities and charRef + */ + if (ctxt->token != 0) { + xmlChar chr[2] = { 0 , 0 } ; + + chr[0] = (xmlChar) ctxt->token; + htmlCheckParagraph(ctxt); + if ((ctxt->sax != NULL) && (ctxt->sax->characters != NULL)) + ctxt->sax->characters(ctxt->userData, chr, 1); + ctxt->token = 0; + ctxt->checkIndex = 0; + } + if ((avail == 1) && (terminate)) { + cur = in->cur[0]; + if ((cur != '<') && (cur != '&')) { + if (ctxt->sax != NULL) { + if (IS_BLANK_CH(cur)) { + if (ctxt->sax->ignorableWhitespace != NULL) + ctxt->sax->ignorableWhitespace( + ctxt->userData, &cur, 1); + } else { + htmlCheckParagraph(ctxt); + if (ctxt->sax->characters != NULL) + ctxt->sax->characters( + ctxt->userData, &cur, 1); + } + } + ctxt->token = 0; + ctxt->checkIndex = 0; + in->cur++; + break; + } + } + if (avail < 2) + goto done; + cur = in->cur[0]; + next = in->cur[1]; + cons = ctxt->nbChars; + if ((xmlStrEqual(ctxt->name, BAD_CAST"script")) || + (xmlStrEqual(ctxt->name, BAD_CAST"style"))) { + /* + * Handle SCRIPT/STYLE separately + */ + if (!terminate) { + int idx; + xmlChar val; + + idx = htmlParseLookupSequence(ctxt, '<', '/', 0, 0, 1); + if (idx < 0) + goto done; + val = in->cur[idx + 2]; + if (val == 0) /* bad cut of input */ + goto done; + } + htmlParseScript(ctxt); + if ((cur == '<') && (next == '/')) { + ctxt->instate = XML_PARSER_END_TAG; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering END_TAG\n"); +#endif + break; + } + } else { + /* + * Sometimes DOCTYPE arrives in the middle of the document + */ + if ((cur == '<') && (next == '!') && + (UPP(2) == 'D') && (UPP(3) == 'O') && + (UPP(4) == 'C') && (UPP(5) == 'T') && + (UPP(6) == 'Y') && (UPP(7) == 'P') && + (UPP(8) == 'E')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; + htmlParseErr(ctxt, XML_HTML_STRUCURE_ERROR, + "Misplaced DOCTYPE declaration\n", + BAD_CAST "DOCTYPE" , NULL); + htmlParseDocTypeDecl(ctxt); + } else if ((cur == '<') && (next == '!') && + (in->cur[2] == '-') && (in->cur[3] == '-')) { + if ((!terminate) && + (htmlParseLookupSequence( + ctxt, '-', '-', '>', 1, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing Comment\n"); +#endif + htmlParseComment(ctxt); + ctxt->instate = XML_PARSER_CONTENT; + } else if ((cur == '<') && (next == '?')) { + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing PI\n"); +#endif + htmlParsePI(ctxt); + ctxt->instate = XML_PARSER_CONTENT; + } else if ((cur == '<') && (next == '!') && (avail < 4)) { + goto done; + } else if ((cur == '<') && (next == '/')) { + ctxt->instate = XML_PARSER_END_TAG; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering END_TAG\n"); +#endif + break; + } else if (cur == '<') { + ctxt->instate = XML_PARSER_START_TAG; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering START_TAG\n"); +#endif + break; + } else if (cur == '&') { + if ((!terminate) && + (htmlParseLookupChars(ctxt, + BAD_CAST "; >/", 4) < 0)) + goto done; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing Reference\n"); +#endif + /* TODO: check generation of subtrees if noent !!! */ + htmlParseReference(ctxt); + } else { + /* + * check that the text sequence is complete + * before handing out the data to the parser + * to avoid problems with erroneous end of + * data detection. + */ + if ((!terminate) && + (htmlParseLookupChars(ctxt, BAD_CAST "<&", 2) < 0)) + goto done; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: Parsing char data\n"); +#endif + htmlParseCharData(ctxt); + } + } + if (cons == ctxt->nbChars) { + if (ctxt->node != NULL) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "detected an error in element content\n", + NULL, NULL); + } + NEXT; + break; + } + + break; + } + case XML_PARSER_END_TAG: + if (avail < 2) + goto done; + if ((!terminate) && + (htmlParseLookupSequence(ctxt, '>', 0, 0, 0, 1) < 0)) + goto done; + htmlParseEndTag(ctxt); + if (ctxt->nameNr == 0) { + ctxt->instate = XML_PARSER_EPILOG; + } else { + ctxt->instate = XML_PARSER_CONTENT; + } + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_CDATA_SECTION: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == CDATA\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_DTD: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == DTD\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_COMMENT: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == COMMENT\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_PI: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == PI\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_ENTITY_DECL: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == ENTITY_DECL\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_ENTITY_VALUE: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == ENTITY_VALUE\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering DTD\n"); +#endif + break; + case XML_PARSER_ATTRIBUTE_VALUE: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == ATTRIBUTE_VALUE\n", + NULL, NULL); + ctxt->instate = XML_PARSER_START_TAG; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering START_TAG\n"); +#endif + break; + case XML_PARSER_SYSTEM_LITERAL: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == XML_PARSER_SYSTEM_LITERAL\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_IGNORE: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == XML_PARSER_IGNORE\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + case XML_PARSER_PUBLIC_LITERAL: + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "HPP: internal error, state == XML_PARSER_LITERAL\n", + NULL, NULL); + ctxt->instate = XML_PARSER_CONTENT; + ctxt->checkIndex = 0; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, + "HPP: entering CONTENT\n"); +#endif + break; + + } + } +done: + if ((avail == 0) && (terminate)) { + htmlAutoCloseOnEnd(ctxt); + if ((ctxt->nameNr == 0) && (ctxt->instate != XML_PARSER_EOF)) { + /* + * SAX: end of the document processing. + */ + ctxt->instate = XML_PARSER_EOF; + if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) + ctxt->sax->endDocument(ctxt->userData); + } + } + if ((ctxt->myDoc != NULL) && + ((terminate) || (ctxt->instate == XML_PARSER_EOF) || + (ctxt->instate == XML_PARSER_EPILOG))) { + xmlDtdPtr dtd; + dtd = xmlGetIntSubset(ctxt->myDoc); + if (dtd == NULL) + ctxt->myDoc->intSubset = + xmlCreateIntSubset(ctxt->myDoc, BAD_CAST "html", + BAD_CAST "-//W3C//DTD HTML 4.0 Transitional//EN", + BAD_CAST "http://www.w3.org/TR/REC-html40/loose.dtd"); + } +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, "HPP: done %d\n", ret); +#endif + return(ret); +} + +/** + * htmlParseChunk: + * @ctxt: an HTML parser context + * @chunk: an char array + * @size: the size in byte of the chunk + * @terminate: last chunk indicator + * + * Parse a Chunk of memory + * + * Returns zero if no error, the xmlParserErrors otherwise. + */ +int +htmlParseChunk(htmlParserCtxtPtr ctxt, const char *chunk, int size, + int terminate) { + if ((ctxt == NULL) || (ctxt->input == NULL)) { + htmlParseErr(ctxt, XML_ERR_INTERNAL_ERROR, + "htmlParseChunk: context error\n", NULL, NULL); + return(XML_ERR_INTERNAL_ERROR); + } + if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && + (ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF)) { + int base = ctxt->input->base - ctxt->input->buf->buffer->content; + int cur = ctxt->input->cur - ctxt->input->base; + int res; + + res = xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + if (res < 0) { + ctxt->errNo = XML_PARSER_EOF; + ctxt->disableSAX = 1; + return (XML_PARSER_EOF); + } + ctxt->input->base = ctxt->input->buf->buffer->content + base; + ctxt->input->cur = ctxt->input->base + cur; + ctxt->input->end = + &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); +#endif + +#if 0 + if ((terminate) || (ctxt->input->buf->buffer->use > 80)) + htmlParseTryOrFinish(ctxt, terminate); +#endif + } else if (ctxt->instate != XML_PARSER_EOF) { + if ((ctxt->input != NULL) && ctxt->input->buf != NULL) { + xmlParserInputBufferPtr in = ctxt->input->buf; + if ((in->encoder != NULL) && (in->buffer != NULL) && + (in->raw != NULL)) { + int nbchars; + + nbchars = xmlCharEncInFunc(in->encoder, in->buffer, in->raw); + if (nbchars < 0) { + htmlParseErr(ctxt, XML_ERR_INVALID_ENCODING, + "encoder error\n", NULL, NULL); + return(XML_ERR_INVALID_ENCODING); + } + } + } + } + htmlParseTryOrFinish(ctxt, terminate); + if (terminate) { + if ((ctxt->instate != XML_PARSER_EOF) && + (ctxt->instate != XML_PARSER_EPILOG) && + (ctxt->instate != XML_PARSER_MISC)) { + ctxt->errNo = XML_ERR_DOCUMENT_END; + ctxt->wellFormed = 0; + } + if (ctxt->instate != XML_PARSER_EOF) { + if ((ctxt->sax) && (ctxt->sax->endDocument != NULL)) + ctxt->sax->endDocument(ctxt->userData); + } + ctxt->instate = XML_PARSER_EOF; + } + return((xmlParserErrors) ctxt->errNo); +} + +/************************************************************************ + * * + * User entry points * + * * + ************************************************************************/ + +/** + * htmlCreatePushParserCtxt: + * @sax: a SAX handler + * @user_data: The user data returned on SAX callbacks + * @chunk: a pointer to an array of chars + * @size: number of chars in the array + * @filename: an optional file name or URI + * @enc: an optional encoding + * + * Create a parser context for using the HTML parser in push mode + * The value of @filename is used for fetching external entities + * and error/warning reports. + * + * Returns the new parser context or NULL + */ +htmlParserCtxtPtr +htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax, void *user_data, + const char *chunk, int size, const char *filename, + xmlCharEncoding enc) { + htmlParserCtxtPtr ctxt; + htmlParserInputPtr inputStream; + xmlParserInputBufferPtr buf; + + xmlInitParser(); + + buf = xmlAllocParserInputBuffer(enc); + if (buf == NULL) return(NULL); + + ctxt = htmlNewParserCtxt(); + if (ctxt == NULL) { + xmlFreeParserInputBuffer(buf); + return(NULL); + } + if(enc==XML_CHAR_ENCODING_UTF8 || buf->encoder) + ctxt->charset=XML_CHAR_ENCODING_UTF8; + if (sax != NULL) { + if (ctxt->sax != (xmlSAXHandlerPtr) &htmlDefaultSAXHandler) + xmlFree(ctxt->sax); + ctxt->sax = (htmlSAXHandlerPtr) xmlMalloc(sizeof(htmlSAXHandler)); + if (ctxt->sax == NULL) { + xmlFree(buf); + xmlFree(ctxt); + return(NULL); + } + memcpy(ctxt->sax, sax, sizeof(htmlSAXHandler)); + if (user_data != NULL) + ctxt->userData = user_data; + } + if (filename == NULL) { + ctxt->directory = NULL; + } else { + ctxt->directory = xmlParserGetDirectory(filename); + } + + inputStream = htmlNewInputStream(ctxt); + if (inputStream == NULL) { + xmlFreeParserCtxt(ctxt); + xmlFree(buf); + return(NULL); + } + + if (filename == NULL) + inputStream->filename = NULL; + else + inputStream->filename = (char *) + xmlCanonicPath((const xmlChar *) filename); + inputStream->buf = buf; + inputStream->base = inputStream->buf->buffer->content; + inputStream->cur = inputStream->buf->buffer->content; + inputStream->end = + &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + + inputPush(ctxt, inputStream); + + if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) && + (ctxt->input->buf != NULL)) { + int base = ctxt->input->base - ctxt->input->buf->buffer->content; + int cur = ctxt->input->cur - ctxt->input->base; + + xmlParserInputBufferPush(ctxt->input->buf, size, chunk); + + ctxt->input->base = ctxt->input->buf->buffer->content + base; + ctxt->input->cur = ctxt->input->base + cur; + ctxt->input->end = + &ctxt->input->buf->buffer->content[ctxt->input->buf->buffer->use]; +#ifdef DEBUG_PUSH + xmlGenericError(xmlGenericErrorContext, "HPP: pushed %d\n", size); +#endif + } + ctxt->progressive = 1; + + return(ctxt); +} +#endif /* LIBXML_PUSH_ENABLED */ + +/** + * htmlSAXParseDoc: + * @cur: a pointer to an array of xmlChar + * @encoding: a free form C string describing the HTML document encoding, or NULL + * @sax: the SAX handler block + * @userData: if using SAX, this pointer will be provided on callbacks. + * + * Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks + * to handle parse events. If sax is NULL, fallback to the default DOM + * behavior and return a tree. + * + * Returns the resulting document tree unless SAX is NULL or the document is + * not well formed. + */ + +htmlDocPtr +htmlSAXParseDoc(xmlChar *cur, const char *encoding, htmlSAXHandlerPtr sax, void *userData) { + htmlDocPtr ret; + htmlParserCtxtPtr ctxt; + + xmlInitParser(); + + if (cur == NULL) return(NULL); + + + ctxt = htmlCreateDocParserCtxt(cur, encoding); + if (ctxt == NULL) return(NULL); + if (sax != NULL) { + if (ctxt->sax != NULL) xmlFree (ctxt->sax); + ctxt->sax = sax; + ctxt->userData = userData; + } + + htmlParseDocument(ctxt); + ret = ctxt->myDoc; + if (sax != NULL) { + ctxt->sax = NULL; + ctxt->userData = NULL; + } + htmlFreeParserCtxt(ctxt); + + return(ret); +} + +/** + * htmlParseDoc: + * @cur: a pointer to an array of xmlChar + * @encoding: a free form C string describing the HTML document encoding, or NULL + * + * parse an HTML in-memory document and build a tree. + * + * Returns the resulting document tree + */ + +htmlDocPtr +htmlParseDoc(xmlChar *cur, const char *encoding) { + return(htmlSAXParseDoc(cur, encoding, NULL, NULL)); +} + + +/** + * htmlCreateFileParserCtxt: + * @filename: the filename + * @encoding: a free form C string describing the HTML document encoding, or NULL + * + * Create a parser context for a file content. + * Automatic support for ZLIB/Compress compressed document is provided + * by default if found at compile-time. + * + * Returns the new parser context or NULL + */ +htmlParserCtxtPtr +htmlCreateFileParserCtxt(const char *filename, const char *encoding) +{ + htmlParserCtxtPtr ctxt; + htmlParserInputPtr inputStream; + char *canonicFilename; + /* htmlCharEncoding enc; */ + xmlChar *content, *content_line = (xmlChar *) "charset="; + + if (filename == NULL) + return(NULL); + + ctxt = htmlNewParserCtxt(); + if (ctxt == NULL) { + return(NULL); + } + canonicFilename = (char *) xmlCanonicPath((const xmlChar *) filename); + if (canonicFilename == NULL) { +#ifdef LIBXML_SAX1_ENABLED + if (xmlDefaultSAXHandler.error != NULL) { + xmlDefaultSAXHandler.error(NULL, "out of memory\n"); + } +#endif + xmlFreeParserCtxt(ctxt); + return(NULL); + } + + inputStream = xmlLoadExternalEntity(canonicFilename, NULL, ctxt); + xmlFree(canonicFilename); + if (inputStream == NULL) { + xmlFreeParserCtxt(ctxt); + return(NULL); + } + + inputPush(ctxt, inputStream); + + /* set encoding */ + if (encoding) { + content = xmlMallocAtomic (xmlStrlen(content_line) + strlen(encoding) + 1); + if (content) { + strcpy ((char *)content, (char *)content_line); + strcat ((char *)content, (char *)encoding); + htmlCheckEncoding (ctxt, content); + xmlFree (content); + } + } + + return(ctxt); +} + +/** + * htmlSAXParseFile: + * @filename: the filename + * @encoding: a free form C string describing the HTML document encoding, or NULL + * @sax: the SAX handler block + * @userData: if using SAX, this pointer will be provided on callbacks. + * + * parse an HTML file and build a tree. Automatic support for ZLIB/Compress + * compressed document is provided by default if found at compile-time. + * It use the given SAX function block to handle the parsing callback. + * If sax is NULL, fallback to the default DOM tree building routines. + * + * Returns the resulting document tree unless SAX is NULL or the document is + * not well formed. + */ + +htmlDocPtr +htmlSAXParseFile(const char *filename, const char *encoding, htmlSAXHandlerPtr sax, + void *userData) { + htmlDocPtr ret; + htmlParserCtxtPtr ctxt; + htmlSAXHandlerPtr oldsax = NULL; + + xmlInitParser(); + + ctxt = htmlCreateFileParserCtxt(filename, encoding); + if (ctxt == NULL) return(NULL); + if (sax != NULL) { + oldsax = ctxt->sax; + ctxt->sax = sax; + ctxt->userData = userData; + } + + htmlParseDocument(ctxt); + + ret = ctxt->myDoc; + if (sax != NULL) { + ctxt->sax = oldsax; + ctxt->userData = NULL; + } + htmlFreeParserCtxt(ctxt); + + return(ret); +} + +/** + * htmlParseFile: + * @filename: the filename + * @encoding: a free form C string describing the HTML document encoding, or NULL + * + * parse an HTML file and build a tree. Automatic support for ZLIB/Compress + * compressed document is provided by default if found at compile-time. + * + * Returns the resulting document tree + */ + +htmlDocPtr +htmlParseFile(const char *filename, const char *encoding) { + return(htmlSAXParseFile(filename, encoding, NULL, NULL)); +} + +/** + * htmlHandleOmittedElem: + * @val: int 0 or 1 + * + * Set and return the previous value for handling HTML omitted tags. + * + * Returns the last value for 0 for no handling, 1 for auto insertion. + */ + +int +htmlHandleOmittedElem(int val) { + int old = htmlOmittedDefaultValue; + + htmlOmittedDefaultValue = val; + return(old); +} + +/** + * htmlElementAllowedHere: + * @parent: HTML parent element + * @elt: HTML element + * + * Checks whether an HTML element may be a direct child of a parent element. + * Note - doesn't check for deprecated elements + * + * Returns 1 if allowed; 0 otherwise. + */ +int +htmlElementAllowedHere(const htmlElemDesc* parent, const xmlChar* elt) { + const char** p ; + + if ( ! elt || ! parent || ! parent->subelts ) + return 0 ; + + for ( p = parent->subelts; *p; ++p ) + if ( !xmlStrcmp((const xmlChar *)*p, elt) ) + return 1 ; + + return 0 ; +} +/** + * htmlElementStatusHere: + * @parent: HTML parent element + * @elt: HTML element + * + * Checks whether an HTML element may be a direct child of a parent element. + * and if so whether it is valid or deprecated. + * + * Returns one of HTML_VALID, HTML_DEPRECATED, HTML_INVALID + */ +htmlStatus +htmlElementStatusHere(const htmlElemDesc* parent, const htmlElemDesc* elt) { + if ( ! parent || ! elt ) + return HTML_INVALID ; + if ( ! htmlElementAllowedHere(parent, (const xmlChar*) elt->name ) ) + return HTML_INVALID ; + + return ( elt->dtd == 0 ) ? HTML_VALID : HTML_DEPRECATED ; +} +/** + * htmlAttrAllowed: + * @elt: HTML element + * @attr: HTML attribute + * @legacy: whether to allow deprecated attributes + * + * Checks whether an attribute is valid for an element + * Has full knowledge of Required and Deprecated attributes + * + * Returns one of HTML_REQUIRED, HTML_VALID, HTML_DEPRECATED, HTML_INVALID + */ +htmlStatus +htmlAttrAllowed(const htmlElemDesc* elt, const xmlChar* attr, int legacy) { + const char** p ; + + if ( !elt || ! attr ) + return HTML_INVALID ; + + if ( elt->attrs_req ) + for ( p = elt->attrs_req; *p; ++p) + if ( !xmlStrcmp((const xmlChar*)*p, attr) ) + return HTML_REQUIRED ; + + if ( elt->attrs_opt ) + for ( p = elt->attrs_opt; *p; ++p) + if ( !xmlStrcmp((const xmlChar*)*p, attr) ) + return HTML_VALID ; + + if ( legacy && elt->attrs_depr ) + for ( p = elt->attrs_depr; *p; ++p) + if ( !xmlStrcmp((const xmlChar*)*p, attr) ) + return HTML_DEPRECATED ; + + return HTML_INVALID ; +} +/** + * htmlNodeStatus: + * @node: an htmlNodePtr in a tree + * @legacy: whether to allow deprecated elements (YES is faster here + * for Element nodes) + * + * Checks whether the tree node is valid. Experimental (the author + * only uses the HTML enhancements in a SAX parser) + * + * Return: for Element nodes, a return from htmlElementAllowedHere (if + * legacy allowed) or htmlElementStatusHere (otherwise). + * for Attribute nodes, a return from htmlAttrAllowed + * for other nodes, HTML_NA (no checks performed) + */ +htmlStatus +htmlNodeStatus(const htmlNodePtr node, int legacy) { + if ( ! node ) + return HTML_INVALID ; + + switch ( node->type ) { + case XML_ELEMENT_NODE: + return legacy + ? ( htmlElementAllowedHere ( + htmlTagLookup(node->parent->name) , node->name + ) ? HTML_VALID : HTML_INVALID ) + : htmlElementStatusHere( + htmlTagLookup(node->parent->name) , + htmlTagLookup(node->name) ) + ; + case XML_ATTRIBUTE_NODE: + return htmlAttrAllowed( + htmlTagLookup(node->parent->name) , node->name, legacy) ; + default: return HTML_NA ; + } +} +/************************************************************************ + * * + * New set (2.6.0) of simpler and more flexible APIs * + * * + ************************************************************************/ +/** + * DICT_FREE: + * @str: a string + * + * Free a string if it is not owned by the "dict" dictionnary in the + * current scope + */ +#define DICT_FREE(str) \ + if ((str) && ((!dict) || \ + (xmlDictOwns(dict, (const xmlChar *)(str)) == 0))) \ + xmlFree((char *)(str)); + +/** + * htmlCtxtReset: + * @ctxt: an HTML parser context + * + * Reset a parser context + */ +void +htmlCtxtReset(htmlParserCtxtPtr ctxt) +{ + xmlParserInputPtr input; + xmlDictPtr dict; + + if (ctxt == NULL) + return; + + xmlInitParser(); + dict = ctxt->dict; + + while ((input = inputPop(ctxt)) != NULL) { /* Non consuming */ + xmlFreeInputStream(input); + } + ctxt->inputNr = 0; + ctxt->input = NULL; + + ctxt->spaceNr = 0; + if (ctxt->spaceTab != NULL) { + ctxt->spaceTab[0] = -1; + ctxt->space = &ctxt->spaceTab[0]; + } else { + ctxt->space = NULL; + } + + + ctxt->nodeNr = 0; + ctxt->node = NULL; + + ctxt->nameNr = 0; + ctxt->name = NULL; + + DICT_FREE(ctxt->version); + ctxt->version = NULL; + DICT_FREE(ctxt->encoding); + ctxt->encoding = NULL; + DICT_FREE(ctxt->directory); + ctxt->directory = NULL; + DICT_FREE(ctxt->extSubURI); + ctxt->extSubURI = NULL; + DICT_FREE(ctxt->extSubSystem); + ctxt->extSubSystem = NULL; + if (ctxt->myDoc != NULL) + xmlFreeDoc(ctxt->myDoc); + ctxt->myDoc = NULL; + + ctxt->standalone = -1; + ctxt->hasExternalSubset = 0; + ctxt->hasPErefs = 0; + ctxt->html = 1; + ctxt->external = 0; + ctxt->instate = XML_PARSER_START; + ctxt->token = 0; + + ctxt->wellFormed = 1; + ctxt->nsWellFormed = 1; + ctxt->valid = 1; + ctxt->vctxt.userData = ctxt; + ctxt->vctxt.error = xmlParserValidityError; + ctxt->vctxt.warning = xmlParserValidityWarning; + ctxt->record_info = 0; + ctxt->nbChars = 0; + ctxt->checkIndex = 0; + ctxt->inSubset = 0; + ctxt->errNo = XML_ERR_OK; + ctxt->depth = 0; + ctxt->charset = XML_CHAR_ENCODING_NONE; + ctxt->catalogs = NULL; + xmlInitNodeInfoSeq(&ctxt->node_seq); + + if (ctxt->attsDefault != NULL) { + xmlHashFree(ctxt->attsDefault, (xmlHashDeallocator) xmlFree); + ctxt->attsDefault = NULL; + } + if (ctxt->attsSpecial != NULL) { + xmlHashFree(ctxt->attsSpecial, NULL); + ctxt->attsSpecial = NULL; + } +} + +/** + * htmlCtxtUseOptions: + * @ctxt: an HTML parser context + * @options: a combination of htmlParserOption(s) + * + * Applies the options to the parser context + * + * Returns 0 in case of success, the set of unknown or unimplemented options + * in case of error. + */ +int +htmlCtxtUseOptions(htmlParserCtxtPtr ctxt, int options) +{ + if (ctxt == NULL) + return(-1); + + if (options & HTML_PARSE_NOWARNING) { + ctxt->sax->warning = NULL; + ctxt->vctxt.warning = NULL; + options -= XML_PARSE_NOWARNING; + ctxt->options |= XML_PARSE_NOWARNING; + } + if (options & HTML_PARSE_NOERROR) { + ctxt->sax->error = NULL; + ctxt->vctxt.error = NULL; + ctxt->sax->fatalError = NULL; + options -= XML_PARSE_NOERROR; + ctxt->options |= XML_PARSE_NOERROR; + } + if (options & HTML_PARSE_PEDANTIC) { + ctxt->pedantic = 1; + options -= XML_PARSE_PEDANTIC; + ctxt->options |= XML_PARSE_PEDANTIC; + } else + ctxt->pedantic = 0; + if (options & XML_PARSE_NOBLANKS) { + ctxt->keepBlanks = 0; + ctxt->sax->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + options -= XML_PARSE_NOBLANKS; + ctxt->options |= XML_PARSE_NOBLANKS; + } else + ctxt->keepBlanks = 1; + if (options & HTML_PARSE_RECOVER) { + ctxt->recovery = 1; + options -= HTML_PARSE_RECOVER; + } else + ctxt->recovery = 0; + if (options & HTML_PARSE_COMPACT) { + ctxt->options |= HTML_PARSE_COMPACT; + options -= HTML_PARSE_COMPACT; + } + if (options & XML_PARSE_HUGE) { + ctxt->options |= XML_PARSE_HUGE; + options -= XML_PARSE_HUGE; + } + ctxt->dictNames = 0; + return (options); +} + +/** + * htmlDoRead: + * @ctxt: an HTML parser context + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * @reuse: keep the context for reuse + * + * Common front-end for the htmlRead functions + * + * Returns the resulting document tree or NULL + */ +static htmlDocPtr +htmlDoRead(htmlParserCtxtPtr ctxt, const char *URL, const char *encoding, + int options, int reuse) +{ + htmlDocPtr ret; + + htmlCtxtUseOptions(ctxt, options); + ctxt->html = 1; + if (encoding != NULL) { + xmlCharEncodingHandlerPtr hdlr; + + hdlr = xmlFindCharEncodingHandler(encoding); + if (hdlr != NULL) { + xmlSwitchToEncoding(ctxt, hdlr); + if (ctxt->input->encoding != NULL) + xmlFree((xmlChar *) ctxt->input->encoding); + ctxt->input->encoding = xmlStrdup((xmlChar *)encoding); + } + } + if ((URL != NULL) && (ctxt->input != NULL) && + (ctxt->input->filename == NULL)) + ctxt->input->filename = (char *) xmlStrdup((const xmlChar *) URL); + htmlParseDocument(ctxt); + ret = ctxt->myDoc; + ctxt->myDoc = NULL; + if (!reuse) { + if ((ctxt->dictNames) && + (ret != NULL) && + (ret->dict == ctxt->dict)) + ctxt->dict = NULL; + xmlFreeParserCtxt(ctxt); + } + return (ret); +} + +/** + * htmlReadDoc: + * @cur: a pointer to a zero terminated string + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML in-memory document and build a tree. + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlReadDoc(const xmlChar * cur, const char *URL, const char *encoding, int options) +{ + htmlParserCtxtPtr ctxt; + + if (cur == NULL) + return (NULL); + + xmlInitParser(); + ctxt = htmlCreateDocParserCtxt(cur, NULL); + if (ctxt == NULL) + return (NULL); + return (htmlDoRead(ctxt, URL, encoding, options, 0)); +} + +/** + * htmlReadFile: + * @filename: a file or URL + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML file from the filesystem or the network. + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlReadFile(const char *filename, const char *encoding, int options) +{ + htmlParserCtxtPtr ctxt; + + xmlInitParser(); + ctxt = htmlCreateFileParserCtxt(filename, encoding); + if (ctxt == NULL) + return (NULL); + return (htmlDoRead(ctxt, NULL, NULL, options, 0)); +} + +/** + * htmlReadMemory: + * @buffer: a pointer to a char array + * @size: the size of the array + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML in-memory document and build a tree. + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlReadMemory(const char *buffer, int size, const char *URL, const char *encoding, int options) +{ + htmlParserCtxtPtr ctxt; + + xmlInitParser(); + ctxt = xmlCreateMemoryParserCtxt(buffer, size); + if (ctxt == NULL) + return (NULL); + htmlDefaultSAXHandlerInit(); + if (ctxt->sax != NULL) + memcpy(ctxt->sax, &htmlDefaultSAXHandler, sizeof(xmlSAXHandlerV1)); + return (htmlDoRead(ctxt, URL, encoding, options, 0)); +} + +/** + * htmlReadFd: + * @fd: an open file descriptor + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML from a file descriptor and build a tree. + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlReadFd(int fd, const char *URL, const char *encoding, int options) +{ + htmlParserCtxtPtr ctxt; + xmlParserInputBufferPtr input; + xmlParserInputPtr stream; + + if (fd < 0) + return (NULL); + + xmlInitParser(); + input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE); + if (input == NULL) + return (NULL); + ctxt = xmlNewParserCtxt(); + if (ctxt == NULL) { + xmlFreeParserInputBuffer(input); + return (NULL); + } + stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); + if (stream == NULL) { + xmlFreeParserInputBuffer(input); + xmlFreeParserCtxt(ctxt); + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 0)); +} + +/** + * htmlReadIO: + * @ioread: an I/O read function + * @ioclose: an I/O close function + * @ioctx: an I/O handler + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an HTML document from I/O functions and source and build a tree. + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlReadIO(xmlInputReadCallback ioread, xmlInputCloseCallback ioclose, + void *ioctx, const char *URL, const char *encoding, int options) +{ + htmlParserCtxtPtr ctxt; + xmlParserInputBufferPtr input; + xmlParserInputPtr stream; + + if (ioread == NULL) + return (NULL); + xmlInitParser(); + + input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, + XML_CHAR_ENCODING_NONE); + if (input == NULL) + return (NULL); + ctxt = htmlNewParserCtxt(); + if (ctxt == NULL) { + xmlFreeParserInputBuffer(input); + return (NULL); + } + stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); + if (stream == NULL) { + xmlFreeParserInputBuffer(input); + xmlFreeParserCtxt(ctxt); + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 0)); +} + +/** + * htmlCtxtReadDoc: + * @ctxt: an HTML parser context + * @cur: a pointer to a zero terminated string + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML in-memory document and build a tree. + * This reuses the existing @ctxt parser context + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlCtxtReadDoc(htmlParserCtxtPtr ctxt, const xmlChar * cur, + const char *URL, const char *encoding, int options) +{ + xmlParserInputPtr stream; + + if (cur == NULL) + return (NULL); + if (ctxt == NULL) + return (NULL); + + htmlCtxtReset(ctxt); + + stream = xmlNewStringInputStream(ctxt, cur); + if (stream == NULL) { + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 1)); +} + +/** + * htmlCtxtReadFile: + * @ctxt: an HTML parser context + * @filename: a file or URL + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML file from the filesystem or the network. + * This reuses the existing @ctxt parser context + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlCtxtReadFile(htmlParserCtxtPtr ctxt, const char *filename, + const char *encoding, int options) +{ + xmlParserInputPtr stream; + + if (filename == NULL) + return (NULL); + if (ctxt == NULL) + return (NULL); + + htmlCtxtReset(ctxt); + + stream = xmlLoadExternalEntity(filename, NULL, ctxt); + if (stream == NULL) { + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, NULL, encoding, options, 1)); +} + +/** + * htmlCtxtReadMemory: + * @ctxt: an HTML parser context + * @buffer: a pointer to a char array + * @size: the size of the array + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML in-memory document and build a tree. + * This reuses the existing @ctxt parser context + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlCtxtReadMemory(htmlParserCtxtPtr ctxt, const char *buffer, int size, + const char *URL, const char *encoding, int options) +{ + xmlParserInputBufferPtr input; + xmlParserInputPtr stream; + + if (ctxt == NULL) + return (NULL); + if (buffer == NULL) + return (NULL); + + htmlCtxtReset(ctxt); + + input = xmlParserInputBufferCreateMem(buffer, size, XML_CHAR_ENCODING_NONE); + if (input == NULL) { + return(NULL); + } + + stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); + if (stream == NULL) { + xmlFreeParserInputBuffer(input); + return(NULL); + } + + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 1)); +} + +/** + * htmlCtxtReadFd: + * @ctxt: an HTML parser context + * @fd: an open file descriptor + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an XML from a file descriptor and build a tree. + * This reuses the existing @ctxt parser context + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlCtxtReadFd(htmlParserCtxtPtr ctxt, int fd, + const char *URL, const char *encoding, int options) +{ + xmlParserInputBufferPtr input; + xmlParserInputPtr stream; + + if (fd < 0) + return (NULL); + if (ctxt == NULL) + return (NULL); + + htmlCtxtReset(ctxt); + + + input = xmlParserInputBufferCreateFd(fd, XML_CHAR_ENCODING_NONE); + if (input == NULL) + return (NULL); + stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); + if (stream == NULL) { + xmlFreeParserInputBuffer(input); + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 1)); +} + +/** + * htmlCtxtReadIO: + * @ctxt: an HTML parser context + * @ioread: an I/O read function + * @ioclose: an I/O close function + * @ioctx: an I/O handler + * @URL: the base URL to use for the document + * @encoding: the document encoding, or NULL + * @options: a combination of htmlParserOption(s) + * + * parse an HTML document from I/O functions and source and build a tree. + * This reuses the existing @ctxt parser context + * + * Returns the resulting document tree + */ +htmlDocPtr +htmlCtxtReadIO(htmlParserCtxtPtr ctxt, xmlInputReadCallback ioread, + xmlInputCloseCallback ioclose, void *ioctx, + const char *URL, + const char *encoding, int options) +{ + xmlParserInputBufferPtr input; + xmlParserInputPtr stream; + + if (ioread == NULL) + return (NULL); + if (ctxt == NULL) + return (NULL); + + htmlCtxtReset(ctxt); + + input = xmlParserInputBufferCreateIO(ioread, ioclose, ioctx, + XML_CHAR_ENCODING_NONE); + if (input == NULL) + return (NULL); + stream = xmlNewIOInputStream(ctxt, input, XML_CHAR_ENCODING_NONE); + if (stream == NULL) { + xmlFreeParserInputBuffer(input); + return (NULL); + } + inputPush(ctxt, stream); + return (htmlDoRead(ctxt, URL, encoding, options, 1)); +} + +#define bottom_HTMLparser +#include "elfgcchack.h" +#endif /* LIBXML_HTML_ENABLED */
diff --git a/libxml2-2.7.7/HTMLtree.c b/libxml2-2.7.7/HTMLtree.c new file mode 100644 index 0000000..b508583 --- /dev/null +++ b/libxml2-2.7.7/HTMLtree.c
@@ -0,0 +1,1231 @@ +/* + * HTMLtree.c : implementation of access function for an HTML tree. + * + * See Copyright for the status of this software. + * + * daniel@veillard.com + */ + + +#define IN_LIBXML +#include "libxml.h" +#ifdef LIBXML_HTML_ENABLED + +#include <string.h> /* for memset() only ! */ + +#ifdef HAVE_CTYPE_H +#include <ctype.h> +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#include <libxml/xmlmemory.h> +#include <libxml/HTMLparser.h> +#include <libxml/HTMLtree.h> +#include <libxml/entities.h> +#include <libxml/valid.h> +#include <libxml/xmlerror.h> +#include <libxml/parserInternals.h> +#include <libxml/globals.h> +#include <libxml/uri.h> + +/************************************************************************ + * * + * Getting/Setting encoding meta tags * + * * + ************************************************************************/ + +/** + * htmlGetMetaEncoding: + * @doc: the document + * + * Encoding definition lookup in the Meta tags + * + * Returns the current encoding as flagged in the HTML source + */ +const xmlChar * +htmlGetMetaEncoding(htmlDocPtr doc) { + htmlNodePtr cur; + const xmlChar *content; + const xmlChar *encoding; + + if (doc == NULL) + return(NULL); + cur = doc->children; + + /* + * Search the html + */ + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrEqual(cur->name, BAD_CAST"html")) + break; + if (xmlStrEqual(cur->name, BAD_CAST"head")) + goto found_head; + if (xmlStrEqual(cur->name, BAD_CAST"meta")) + goto found_meta; + } + cur = cur->next; + } + if (cur == NULL) + return(NULL); + cur = cur->children; + + /* + * Search the head + */ + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrEqual(cur->name, BAD_CAST"head")) + break; + if (xmlStrEqual(cur->name, BAD_CAST"meta")) + goto found_meta; + } + cur = cur->next; + } + if (cur == NULL) + return(NULL); +found_head: + cur = cur->children; + + /* + * Search the meta elements + */ +found_meta: + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrEqual(cur->name, BAD_CAST"meta")) { + xmlAttrPtr attr = cur->properties; + int http; + const xmlChar *value; + + content = NULL; + http = 0; + while (attr != NULL) { + if ((attr->children != NULL) && + (attr->children->type == XML_TEXT_NODE) && + (attr->children->next == NULL)) { + value = attr->children->content; + if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv")) + && (!xmlStrcasecmp(value, BAD_CAST"Content-Type"))) + http = 1; + else if ((value != NULL) + && (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) + content = value; + if ((http != 0) && (content != NULL)) + goto found_content; + } + attr = attr->next; + } + } + } + cur = cur->next; + } + return(NULL); + +found_content: + encoding = xmlStrstr(content, BAD_CAST"charset="); + if (encoding == NULL) + encoding = xmlStrstr(content, BAD_CAST"Charset="); + if (encoding == NULL) + encoding = xmlStrstr(content, BAD_CAST"CHARSET="); + if (encoding != NULL) { + encoding += 8; + } else { + encoding = xmlStrstr(content, BAD_CAST"charset ="); + if (encoding == NULL) + encoding = xmlStrstr(content, BAD_CAST"Charset ="); + if (encoding == NULL) + encoding = xmlStrstr(content, BAD_CAST"CHARSET ="); + if (encoding != NULL) + encoding += 9; + } + if (encoding != NULL) { + while ((*encoding == ' ') || (*encoding == '\t')) encoding++; + } + return(encoding); +} + +/** + * htmlSetMetaEncoding: + * @doc: the document + * @encoding: the encoding string + * + * Sets the current encoding in the Meta tags + * NOTE: this will not change the document content encoding, just + * the META flag associated. + * + * Returns 0 in case of success and -1 in case of error + */ +int +htmlSetMetaEncoding(htmlDocPtr doc, const xmlChar *encoding) { + htmlNodePtr cur, meta = NULL, head = NULL; + const xmlChar *content = NULL; + char newcontent[100]; + + + if (doc == NULL) + return(-1); + + /* html isn't a real encoding it's just libxml2 way to get entities */ + if (!xmlStrcasecmp(encoding, BAD_CAST "html")) + return(-1); + + if (encoding != NULL) { + snprintf(newcontent, sizeof(newcontent), "text/html; charset=%s", + (char *)encoding); + newcontent[sizeof(newcontent) - 1] = 0; + } + + cur = doc->children; + + /* + * Search the html + */ + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrcasecmp(cur->name, BAD_CAST"html") == 0) + break; + if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0) + goto found_head; + if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) + goto found_meta; + } + cur = cur->next; + } + if (cur == NULL) + return(-1); + cur = cur->children; + + /* + * Search the head + */ + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrcasecmp(cur->name, BAD_CAST"head") == 0) + break; + if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) { + head = cur->parent; + goto found_meta; + } + } + cur = cur->next; + } + if (cur == NULL) + return(-1); +found_head: + head = cur; + if (cur->children == NULL) + goto create; + cur = cur->children; + +found_meta: + /* + * Search and update all the remaining the meta elements carrying + * encoding informations + */ + while (cur != NULL) { + if ((cur->type == XML_ELEMENT_NODE) && (cur->name != NULL)) { + if (xmlStrcasecmp(cur->name, BAD_CAST"meta") == 0) { + xmlAttrPtr attr = cur->properties; + int http; + const xmlChar *value; + + content = NULL; + http = 0; + while (attr != NULL) { + if ((attr->children != NULL) && + (attr->children->type == XML_TEXT_NODE) && + (attr->children->next == NULL)) { + value = attr->children->content; + if ((!xmlStrcasecmp(attr->name, BAD_CAST"http-equiv")) + && (!xmlStrcasecmp(value, BAD_CAST"Content-Type"))) + http = 1; + else + { + if ((value != NULL) && + (!xmlStrcasecmp(attr->name, BAD_CAST"content"))) + content = value; + } + if ((http != 0) && (content != NULL)) + break; + } + attr = attr->next; + } + if ((http != 0) && (content != NULL)) { + meta = cur; + break; + } + + } + } + cur = cur->next; + } +create: + if (meta == NULL) { + if ((encoding != NULL) && (head != NULL)) { + /* + * Create a new Meta element with the right attributes + */ + + meta = xmlNewDocNode(doc, NULL, BAD_CAST"meta", NULL); + if (head->children == NULL) + xmlAddChild(head, meta); + else + xmlAddPrevSibling(head->children, meta); + xmlNewProp(meta, BAD_CAST"http-equiv", BAD_CAST"Content-Type"); + xmlNewProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } else { + /* change the document only if there is a real encoding change */ + if (xmlStrcasestr(content, encoding) == NULL) { + xmlSetProp(meta, BAD_CAST"content", BAD_CAST newcontent); + } + } + + + return(0); +} + +/** + * booleanHTMLAttrs: + * + * These are the HTML attributes which will be output + * in minimized form, i.e. <option selected="selected"> will be + * output as <option selected>, as per XSLT 1.0 16.2 "HTML Output Method" + * + */ +static const char* htmlBooleanAttrs[] = { + "checked", "compact", "declare", "defer", "disabled", "ismap", + "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly", + "selected", NULL +}; + + +/** + * htmlIsBooleanAttr: + * @name: the name of the attribute to check + * + * Determine if a given attribute is a boolean attribute. + * + * returns: false if the attribute is not boolean, true otherwise. + */ +int +htmlIsBooleanAttr(const xmlChar *name) +{ + int i = 0; + + while (htmlBooleanAttrs[i] != NULL) { + if (xmlStrcasecmp((const xmlChar *)htmlBooleanAttrs[i], name) == 0) + return 1; + i++; + } + return 0; +} + +#ifdef LIBXML_OUTPUT_ENABLED +/* + * private routine exported from xmlIO.c + */ +xmlOutputBufferPtr +xmlAllocOutputBufferInternal(xmlCharEncodingHandlerPtr encoder); +/************************************************************************ + * * + * Output error handlers * + * * + ************************************************************************/ +/** + * htmlSaveErrMemory: + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +htmlSaveErrMemory(const char *extra) +{ + __xmlSimpleError(XML_FROM_OUTPUT, XML_ERR_NO_MEMORY, NULL, NULL, extra); +} + +/** + * htmlSaveErr: + * @code: the error number + * @node: the location of the error. + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +htmlSaveErr(int code, xmlNodePtr node, const char *extra) +{ + const char *msg = NULL; + + switch(code) { + case XML_SAVE_NOT_UTF8: + msg = "string is not in UTF-8\n"; + break; + case XML_SAVE_CHAR_INVALID: + msg = "invalid character value\n"; + break; + case XML_SAVE_UNKNOWN_ENCODING: + msg = "unknown encoding %s\n"; + break; + case XML_SAVE_NO_DOCTYPE: + msg = "HTML has no DOCTYPE\n"; + break; + default: + msg = "unexpected error number\n"; + } + __xmlSimpleError(XML_FROM_OUTPUT, code, node, msg, extra); +} + +/************************************************************************ + * * + * Dumping HTML tree content to a simple buffer * + * * + ************************************************************************/ + +static int +htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, + int format); + +/** + * htmlNodeDumpFormat: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the current node + * @format: should formatting spaces been added + * + * Dump an HTML node, recursive behaviour,children are printed too. + * + * Returns the number of byte written or -1 in case of error + */ +static int +htmlNodeDumpFormat(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur, + int format) { + unsigned int use; + int ret; + xmlOutputBufferPtr outbuf; + + if (cur == NULL) { + return (-1); + } + if (buf == NULL) { + return (-1); + } + outbuf = (xmlOutputBufferPtr) xmlMalloc(sizeof(xmlOutputBuffer)); + if (outbuf == NULL) { + htmlSaveErrMemory("allocating HTML output buffer"); + return (-1); + } + memset(outbuf, 0, (size_t) sizeof(xmlOutputBuffer)); + outbuf->buffer = buf; + outbuf->encoder = NULL; + outbuf->writecallback = NULL; + outbuf->closecallback = NULL; + outbuf->context = NULL; + outbuf->written = 0; + + use = buf->use; + htmlNodeDumpFormatOutput(outbuf, doc, cur, NULL, format); + xmlFree(outbuf); + ret = buf->use - use; + return (ret); +} + +/** + * htmlNodeDump: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the current node + * + * Dump an HTML node, recursive behaviour,children are printed too, + * and formatting returns are added. + * + * Returns the number of byte written or -1 in case of error + */ +int +htmlNodeDump(xmlBufferPtr buf, xmlDocPtr doc, xmlNodePtr cur) { + xmlInitParser(); + + return(htmlNodeDumpFormat(buf, doc, cur, 1)); +} + +/** + * htmlNodeDumpFileFormat: + * @out: the FILE pointer + * @doc: the document + * @cur: the current node + * @encoding: the document encoding + * @format: should formatting spaces been added + * + * Dump an HTML node, recursive behaviour,children are printed too. + * + * TODO: if encoding == NULL try to save in the doc encoding + * + * returns: the number of byte written or -1 in case of failure. + */ +int +htmlNodeDumpFileFormat(FILE *out, xmlDocPtr doc, + xmlNodePtr cur, const char *encoding, int format) { + xmlOutputBufferPtr buf; + xmlCharEncodingHandlerPtr handler = NULL; + int ret; + + xmlInitParser(); + + if (encoding != NULL) { + xmlCharEncoding enc; + + enc = xmlParseCharEncoding(encoding); + if (enc != XML_CHAR_ENCODING_UTF8) { + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) + return(-1); + } + } + + /* + * Fallback to HTML or ASCII when the encoding is unspecified + */ + if (handler == NULL) + handler = xmlFindCharEncodingHandler("HTML"); + if (handler == NULL) + handler = xmlFindCharEncodingHandler("ascii"); + + /* + * save the content to a temp buffer. + */ + buf = xmlOutputBufferCreateFile(out, handler); + if (buf == NULL) return(0); + + htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format); + + ret = xmlOutputBufferClose(buf); + return(ret); +} + +/** + * htmlNodeDumpFile: + * @out: the FILE pointer + * @doc: the document + * @cur: the current node + * + * Dump an HTML node, recursive behaviour,children are printed too, + * and formatting returns are added. + */ +void +htmlNodeDumpFile(FILE *out, xmlDocPtr doc, xmlNodePtr cur) { + htmlNodeDumpFileFormat(out, doc, cur, NULL, 1); +} + +/** + * htmlDocDumpMemoryFormat: + * @cur: the document + * @mem: OUT: the memory pointer + * @size: OUT: the memory length + * @format: should formatting spaces been added + * + * Dump an HTML document in memory and return the xmlChar * and it's size. + * It's up to the caller to free the memory. + */ +void +htmlDocDumpMemoryFormat(xmlDocPtr cur, xmlChar**mem, int *size, int format) { + xmlOutputBufferPtr buf; + xmlCharEncodingHandlerPtr handler = NULL; + const char *encoding; + + xmlInitParser(); + + if ((mem == NULL) || (size == NULL)) + return; + if (cur == NULL) { + *mem = NULL; + *size = 0; + return; + } + + encoding = (const char *) htmlGetMetaEncoding(cur); + + if (encoding != NULL) { + xmlCharEncoding enc; + + enc = xmlParseCharEncoding(encoding); + if (enc != cur->charset) { + if (cur->charset != XML_CHAR_ENCODING_UTF8) { + /* + * Not supported yet + */ + *mem = NULL; + *size = 0; + return; + } + + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) { + *mem = NULL; + *size = 0; + return; + } + } else { + handler = xmlFindCharEncodingHandler(encoding); + } + } + + /* + * Fallback to HTML or ASCII when the encoding is unspecified + */ + if (handler == NULL) + handler = xmlFindCharEncodingHandler("HTML"); + if (handler == NULL) + handler = xmlFindCharEncodingHandler("ascii"); + + buf = xmlAllocOutputBufferInternal(handler); + if (buf == NULL) { + *mem = NULL; + *size = 0; + return; + } + + htmlDocContentDumpFormatOutput(buf, cur, NULL, format); + + xmlOutputBufferFlush(buf); + if (buf->conv != NULL) { + *size = buf->conv->use; + *mem = xmlStrndup(buf->conv->content, *size); + } else { + *size = buf->buffer->use; + *mem = xmlStrndup(buf->buffer->content, *size); + } + (void)xmlOutputBufferClose(buf); +} + +/** + * htmlDocDumpMemory: + * @cur: the document + * @mem: OUT: the memory pointer + * @size: OUT: the memory length + * + * Dump an HTML document in memory and return the xmlChar * and it's size. + * It's up to the caller to free the memory. + */ +void +htmlDocDumpMemory(xmlDocPtr cur, xmlChar**mem, int *size) { + htmlDocDumpMemoryFormat(cur, mem, size, 1); +} + + +/************************************************************************ + * * + * Dumping HTML tree content to an I/O output buffer * + * * + ************************************************************************/ + +void xmlNsListDumpOutput(xmlOutputBufferPtr buf, xmlNsPtr cur); + +/** + * htmlDtdDumpOutput: + * @buf: the HTML buffer output + * @doc: the document + * @encoding: the encoding string + * + * TODO: check whether encoding is needed + * + * Dump the HTML document DTD, if any. + */ +static void +htmlDtdDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + const char *encoding ATTRIBUTE_UNUSED) { + xmlDtdPtr cur = doc->intSubset; + + if (cur == NULL) { + htmlSaveErr(XML_SAVE_NO_DOCTYPE, (xmlNodePtr) doc, NULL); + return; + } + xmlOutputBufferWriteString(buf, "<!DOCTYPE "); + xmlOutputBufferWriteString(buf, (const char *)cur->name); + if (cur->ExternalID != NULL) { + xmlOutputBufferWriteString(buf, " PUBLIC "); + xmlBufferWriteQuotedString(buf->buffer, cur->ExternalID); + if (cur->SystemID != NULL) { + xmlOutputBufferWriteString(buf, " "); + xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); + } + } else if (cur->SystemID != NULL) { + xmlOutputBufferWriteString(buf, " SYSTEM "); + xmlBufferWriteQuotedString(buf->buffer, cur->SystemID); + } + xmlOutputBufferWriteString(buf, ">\n"); +} + +/** + * htmlAttrDumpOutput: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the attribute pointer + * @encoding: the encoding string + * + * Dump an HTML attribute + */ +static void +htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur, + const char *encoding ATTRIBUTE_UNUSED) { + xmlChar *value; + + /* + * TODO: The html output method should not escape a & character + * occurring in an attribute value immediately followed by + * a { character (see Section B.7.1 of the HTML 4.0 Recommendation). + */ + + if (cur == NULL) { + return; + } + xmlOutputBufferWriteString(buf, " "); + if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { + xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); + xmlOutputBufferWriteString(buf, ":"); + } + xmlOutputBufferWriteString(buf, (const char *)cur->name); + if ((cur->children != NULL) && (!htmlIsBooleanAttr(cur->name))) { + value = xmlNodeListGetString(doc, cur->children, 0); + if (value) { + xmlOutputBufferWriteString(buf, "="); + if ((cur->ns == NULL) && (cur->parent != NULL) && + (cur->parent->ns == NULL) && + ((!xmlStrcasecmp(cur->name, BAD_CAST "href")) || + (!xmlStrcasecmp(cur->name, BAD_CAST "action")) || + (!xmlStrcasecmp(cur->name, BAD_CAST "src")) || + ((!xmlStrcasecmp(cur->name, BAD_CAST "name")) && + (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) { + xmlChar *escaped; + xmlChar *tmp = value; + + while (IS_BLANK_CH(*tmp)) tmp++; + + escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+"); + if (escaped != NULL) { + xmlBufferWriteQuotedString(buf->buffer, escaped); + xmlFree(escaped); + } else { + xmlBufferWriteQuotedString(buf->buffer, value); + } + } else { + xmlBufferWriteQuotedString(buf->buffer, value); + } + xmlFree(value); + } else { + xmlOutputBufferWriteString(buf, "=\"\""); + } + } +} + +/** + * htmlAttrListDumpOutput: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the first attribute pointer + * @encoding: the encoding string + * + * Dump a list of HTML attributes + */ +static void +htmlAttrListDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur, const char *encoding) { + if (cur == NULL) { + return; + } + while (cur != NULL) { + htmlAttrDumpOutput(buf, doc, cur, encoding); + cur = cur->next; + } +} + + + +/** + * htmlNodeListDumpOutput: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the first node + * @encoding: the encoding string + * @format: should formatting spaces been added + * + * Dump an HTML node list, recursive behaviour,children are printed too. + */ +static void +htmlNodeListDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + xmlNodePtr cur, const char *encoding, int format) { + if (cur == NULL) { + return; + } + while (cur != NULL) { + htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format); + cur = cur->next; + } +} + +/** + * htmlNodeDumpFormatOutput: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the current node + * @encoding: the encoding string + * @format: should formatting spaces been added + * + * Dump an HTML node, recursive behaviour,children are printed too. + */ +void +htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + xmlNodePtr cur, const char *encoding, int format) { + const htmlElemDesc * info; + + xmlInitParser(); + + if ((cur == NULL) || (buf == NULL)) { + return; + } + /* + * Special cases. + */ + if (cur->type == XML_DTD_NODE) + return; + if ((cur->type == XML_HTML_DOCUMENT_NODE) || + (cur->type == XML_DOCUMENT_NODE)){ + htmlDocContentDumpOutput(buf, (xmlDocPtr) cur, encoding); + return; + } + if (cur->type == XML_ATTRIBUTE_NODE) { + htmlAttrDumpOutput(buf, doc, (xmlAttrPtr) cur, encoding); + return; + } + if (cur->type == HTML_TEXT_NODE) { + if (cur->content != NULL) { + if (((cur->name == (const xmlChar *)xmlStringText) || + (cur->name != (const xmlChar *)xmlStringTextNoenc)) && + ((cur->parent == NULL) || + ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) && + (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) { + xmlChar *buffer; + + buffer = xmlEncodeEntitiesReentrant(doc, cur->content); + if (buffer != NULL) { + xmlOutputBufferWriteString(buf, (const char *)buffer); + xmlFree(buffer); + } + } else { + xmlOutputBufferWriteString(buf, (const char *)cur->content); + } + } + return; + } + if (cur->type == HTML_COMMENT_NODE) { + if (cur->content != NULL) { + xmlOutputBufferWriteString(buf, "<!--"); + xmlOutputBufferWriteString(buf, (const char *)cur->content); + xmlOutputBufferWriteString(buf, "-->"); + } + return; + } + if (cur->type == HTML_PI_NODE) { + if (cur->name == NULL) + return; + xmlOutputBufferWriteString(buf, "<?"); + xmlOutputBufferWriteString(buf, (const char *)cur->name); + if (cur->content != NULL) { + xmlOutputBufferWriteString(buf, " "); + xmlOutputBufferWriteString(buf, (const char *)cur->content); + } + xmlOutputBufferWriteString(buf, ">"); + return; + } + if (cur->type == HTML_ENTITY_REF_NODE) { + xmlOutputBufferWriteString(buf, "&"); + xmlOutputBufferWriteString(buf, (const char *)cur->name); + xmlOutputBufferWriteString(buf, ";"); + return; + } + if (cur->type == HTML_PRESERVE_NODE) { + if (cur->content != NULL) { + xmlOutputBufferWriteString(buf, (const char *)cur->content); + } + return; + } + + /* + * Get specific HTML info for that node. + */ + if (cur->ns == NULL) + info = htmlTagLookup(cur->name); + else + info = NULL; + + xmlOutputBufferWriteString(buf, "<"); + if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { + xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); + xmlOutputBufferWriteString(buf, ":"); + } + xmlOutputBufferWriteString(buf, (const char *)cur->name); + if (cur->nsDef) + xmlNsListDumpOutput(buf, cur->nsDef); + if (cur->properties != NULL) + htmlAttrListDumpOutput(buf, doc, cur->properties, encoding); + + if ((info != NULL) && (info->empty)) { + xmlOutputBufferWriteString(buf, ">"); + if ((format) && (!info->isinline) && (cur->next != NULL)) { + if ((cur->next->type != HTML_TEXT_NODE) && + (cur->next->type != HTML_ENTITY_REF_NODE) && + (cur->parent != NULL) && + (cur->parent->name != NULL) && + (cur->parent->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } + return; + } + if (((cur->type == XML_ELEMENT_NODE) || (cur->content == NULL)) && + (cur->children == NULL)) { + if ((info != NULL) && (info->saveEndTag != 0) && + (xmlStrcmp(BAD_CAST info->name, BAD_CAST "html")) && + (xmlStrcmp(BAD_CAST info->name, BAD_CAST "body"))) { + xmlOutputBufferWriteString(buf, ">"); + } else { + xmlOutputBufferWriteString(buf, "></"); + if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { + xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); + xmlOutputBufferWriteString(buf, ":"); + } + xmlOutputBufferWriteString(buf, (const char *)cur->name); + xmlOutputBufferWriteString(buf, ">"); + } + if ((format) && (cur->next != NULL) && + (info != NULL) && (!info->isinline)) { + if ((cur->next->type != HTML_TEXT_NODE) && + (cur->next->type != HTML_ENTITY_REF_NODE) && + (cur->parent != NULL) && + (cur->parent->name != NULL) && + (cur->parent->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } + return; + } + xmlOutputBufferWriteString(buf, ">"); + if ((cur->type != XML_ELEMENT_NODE) && + (cur->content != NULL)) { + /* + * Uses the OutputBuffer property to automatically convert + * invalids to charrefs + */ + + xmlOutputBufferWriteString(buf, (const char *) cur->content); + } + if (cur->children != NULL) { + if ((format) && (info != NULL) && (!info->isinline) && + (cur->children->type != HTML_TEXT_NODE) && + (cur->children->type != HTML_ENTITY_REF_NODE) && + (cur->children != cur->last) && + (cur->name != NULL) && + (cur->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + htmlNodeListDumpOutput(buf, doc, cur->children, encoding, format); + if ((format) && (info != NULL) && (!info->isinline) && + (cur->last->type != HTML_TEXT_NODE) && + (cur->last->type != HTML_ENTITY_REF_NODE) && + (cur->children != cur->last) && + (cur->name != NULL) && + (cur->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } + xmlOutputBufferWriteString(buf, "</"); + if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { + xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); + xmlOutputBufferWriteString(buf, ":"); + } + xmlOutputBufferWriteString(buf, (const char *)cur->name); + xmlOutputBufferWriteString(buf, ">"); + if ((format) && (info != NULL) && (!info->isinline) && + (cur->next != NULL)) { + if ((cur->next->type != HTML_TEXT_NODE) && + (cur->next->type != HTML_ENTITY_REF_NODE) && + (cur->parent != NULL) && + (cur->parent->name != NULL) && + (cur->parent->name[0] != 'p')) /* p, pre, param */ + xmlOutputBufferWriteString(buf, "\n"); + } +} + +/** + * htmlNodeDumpOutput: + * @buf: the HTML buffer output + * @doc: the document + * @cur: the current node + * @encoding: the encoding string + * + * Dump an HTML node, recursive behaviour,children are printed too, + * and formatting returns/spaces are added. + */ +void +htmlNodeDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, + xmlNodePtr cur, const char *encoding) { + htmlNodeDumpFormatOutput(buf, doc, cur, encoding, 1); +} + +/** + * htmlDocContentDumpFormatOutput: + * @buf: the HTML buffer output + * @cur: the document + * @encoding: the encoding string + * @format: should formatting spaces been added + * + * Dump an HTML document. + */ +void +htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, + const char *encoding, int format) { + int type; + + xmlInitParser(); + + if ((buf == NULL) || (cur == NULL)) + return; + + /* + * force to output the stuff as HTML, especially for entities + */ + type = cur->type; + cur->type = XML_HTML_DOCUMENT_NODE; + if (cur->intSubset != NULL) { + htmlDtdDumpOutput(buf, cur, NULL); + } + if (cur->children != NULL) { + htmlNodeListDumpOutput(buf, cur, cur->children, encoding, format); + } + xmlOutputBufferWriteString(buf, "\n"); + cur->type = (xmlElementType) type; +} + +/** + * htmlDocContentDumpOutput: + * @buf: the HTML buffer output + * @cur: the document + * @encoding: the encoding string + * + * Dump an HTML document. Formating return/spaces are added. + */ +void +htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, + const char *encoding) { + htmlDocContentDumpFormatOutput(buf, cur, encoding, 1); +} + +/************************************************************************ + * * + * Saving functions front-ends * + * * + ************************************************************************/ + +/** + * htmlDocDump: + * @f: the FILE* + * @cur: the document + * + * Dump an HTML document to an open FILE. + * + * returns: the number of byte written or -1 in case of failure. + */ +int +htmlDocDump(FILE *f, xmlDocPtr cur) { + xmlOutputBufferPtr buf; + xmlCharEncodingHandlerPtr handler = NULL; + const char *encoding; + int ret; + + xmlInitParser(); + + if ((cur == NULL) || (f == NULL)) { + return(-1); + } + + encoding = (const char *) htmlGetMetaEncoding(cur); + + if (encoding != NULL) { + xmlCharEncoding enc; + + enc = xmlParseCharEncoding(encoding); + if (enc != cur->charset) { + if (cur->charset != XML_CHAR_ENCODING_UTF8) { + /* + * Not supported yet + */ + return(-1); + } + + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) + return(-1); + } else { + handler = xmlFindCharEncodingHandler(encoding); + } + } + + /* + * Fallback to HTML or ASCII when the encoding is unspecified + */ + if (handler == NULL) + handler = xmlFindCharEncodingHandler("HTML"); + if (handler == NULL) + handler = xmlFindCharEncodingHandler("ascii"); + + buf = xmlOutputBufferCreateFile(f, handler); + if (buf == NULL) return(-1); + htmlDocContentDumpOutput(buf, cur, NULL); + + ret = xmlOutputBufferClose(buf); + return(ret); +} + +/** + * htmlSaveFile: + * @filename: the filename (or URL) + * @cur: the document + * + * Dump an HTML document to a file. If @filename is "-" the stdout file is + * used. + * returns: the number of byte written or -1 in case of failure. + */ +int +htmlSaveFile(const char *filename, xmlDocPtr cur) { + xmlOutputBufferPtr buf; + xmlCharEncodingHandlerPtr handler = NULL; + const char *encoding; + int ret; + + if ((cur == NULL) || (filename == NULL)) + return(-1); + + xmlInitParser(); + + encoding = (const char *) htmlGetMetaEncoding(cur); + + if (encoding != NULL) { + xmlCharEncoding enc; + + enc = xmlParseCharEncoding(encoding); + if (enc != cur->charset) { + if (cur->charset != XML_CHAR_ENCODING_UTF8) { + /* + * Not supported yet + */ + return(-1); + } + + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) + return(-1); + } + } + + /* + * Fallback to HTML or ASCII when the encoding is unspecified + */ + if (handler == NULL) + handler = xmlFindCharEncodingHandler("HTML"); + if (handler == NULL) + handler = xmlFindCharEncodingHandler("ascii"); + + /* + * save the content to a temp buffer. + */ + buf = xmlOutputBufferCreateFilename(filename, handler, cur->compression); + if (buf == NULL) return(0); + + htmlDocContentDumpOutput(buf, cur, NULL); + + ret = xmlOutputBufferClose(buf); + return(ret); +} + +/** + * htmlSaveFileFormat: + * @filename: the filename + * @cur: the document + * @format: should formatting spaces been added + * @encoding: the document encoding + * + * Dump an HTML document to a file using a given encoding. + * + * returns: the number of byte written or -1 in case of failure. + */ +int +htmlSaveFileFormat(const char *filename, xmlDocPtr cur, + const char *encoding, int format) { + xmlOutputBufferPtr buf; + xmlCharEncodingHandlerPtr handler = NULL; + int ret; + + if ((cur == NULL) || (filename == NULL)) + return(-1); + + xmlInitParser(); + + if (encoding != NULL) { + xmlCharEncoding enc; + + enc = xmlParseCharEncoding(encoding); + if (enc != cur->charset) { + if (cur->charset != XML_CHAR_ENCODING_UTF8) { + /* + * Not supported yet + */ + return(-1); + } + + handler = xmlFindCharEncodingHandler(encoding); + if (handler == NULL) + return(-1); + } + htmlSetMetaEncoding(cur, (const xmlChar *) encoding); + } else { + htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8"); + } + + /* + * Fallback to HTML or ASCII when the encoding is unspecified + */ + if (handler == NULL) + handler = xmlFindCharEncodingHandler("HTML"); + if (handler == NULL) + handler = xmlFindCharEncodingHandler("ascii"); + + /* + * save the content to a temp buffer. + */ + buf = xmlOutputBufferCreateFilename(filename, handler, 0); + if (buf == NULL) return(0); + + htmlDocContentDumpFormatOutput(buf, cur, encoding, format); + + ret = xmlOutputBufferClose(buf); + return(ret); +} + +/** + * htmlSaveFileEnc: + * @filename: the filename + * @cur: the document + * @encoding: the document encoding + * + * Dump an HTML document to a file using a given encoding + * and formatting returns/spaces are added. + * + * returns: the number of byte written or -1 in case of failure. + */ +int +htmlSaveFileEnc(const char *filename, xmlDocPtr cur, const char *encoding) { + return(htmlSaveFileFormat(filename, cur, encoding, 1)); +} + +#endif /* LIBXML_OUTPUT_ENABLED */ + +#define bottom_HTMLtree +#include "elfgcchack.h" +#endif /* LIBXML_HTML_ENABLED */
diff --git a/libxml2-2.7.7/INSTALL b/libxml2-2.7.7/INSTALL new file mode 100644 index 0000000..7d1c323 --- /dev/null +++ b/libxml2-2.7.7/INSTALL
@@ -0,0 +1,365 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `<wchar.h>' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. +
diff --git a/libxml2-2.7.7/Makefile.am b/libxml2-2.7.7/Makefile.am new file mode 100644 index 0000000..967afbd --- /dev/null +++ b/libxml2-2.7.7/Makefile.am
@@ -0,0 +1,1262 @@ +## Process this file with automake to produce Makefile.in + +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = include . doc example xstc @PYTHON_SUBDIR@ + +DIST_SUBDIRS = include . doc example python xstc + +INCLUDES = -I$(top_builddir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@ + +noinst_PROGRAMS=testSchemas testRelax testSAX testHTML testXPath testURI \ + testThreads testC14N testAutomata testRegexp \ + testReader testapi testModule runtest runsuite testchar \ + testdict runxmlconf testrecurse + +bin_PROGRAMS = xmllint xmlcatalog + +bin_SCRIPTS=xml2-config + +lib_LTLIBRARIES = libxml2.la +libxml2_la_LIBADD = @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@ + +if USE_VERSION_SCRIPT +LIBXML2_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxml2.syms +else +LIBXML2_VERSION_SCRIPT = +endif + +libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ \ + $(LIBXML2_VERSION_SCRIPT) \ + -version-info @LIBXML_VERSION_INFO@ \ + @MODULE_PLATFORM_LIBS@ + +if WITH_TRIO_SOURCES +libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ + parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ + valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \ + xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \ + catalog.c globals.c threads.c c14n.c xmlstring.c \ + xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ + triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \ + xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ + xmlmodule.c schematron.c +else +libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ + parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ + valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \ + xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \ + catalog.c globals.c threads.c c14n.c xmlstring.c \ + xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ + xmlreader.c relaxng.c dict.c SAX2.c \ + xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ + xmlmodule.c schematron.c +endif + +DEPS = $(top_builddir)/libxml2.la +LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@ + + +man_MANS = xml2-config.1 libxml.3 + +m4datadir = $(datadir)/aclocal +m4data_DATA = libxml.m4 + +runtest_SOURCES=runtest.c +runtest_LDFLAGS = +runtest_DEPENDENCIES = $(DEPS) +runtest_LDADD= @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS) + +testrecurse_SOURCES=testrecurse.c +testrecurse_LDFLAGS = +testrecurse_DEPENDENCIES = $(DEPS) +testrecurse_LDADD= @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS) + +testchar_SOURCES=testchar.c +testchar_LDFLAGS = +testchar_DEPENDENCIES = $(DEPS) +testchar_LDADD= @RDL_LIBS@ $(LDADDS) + +testdict_SOURCES=testdict.c +testdict_LDFLAGS = +testdict_DEPENDENCIES = $(DEPS) +testdict_LDADD= @RDL_LIBS@ $(LDADDS) + +runsuite_SOURCES=runsuite.c +runsuite_LDFLAGS = +runsuite_DEPENDENCIES = $(DEPS) +runsuite_LDADD= @RDL_LIBS@ $(LDADDS) + +xmllint_SOURCES=xmllint.c +xmllint_LDFLAGS = +xmllint_DEPENDENCIES = $(DEPS) +xmllint_LDADD= @RDL_LIBS@ $(LDADDS) + +testSAX_SOURCES=testSAX.c +testSAX_LDFLAGS = +testSAX_DEPENDENCIES = $(DEPS) +testSAX_LDADD= $(LDADDS) + +testHTML_SOURCES=testHTML.c +testHTML_LDFLAGS = +testHTML_DEPENDENCIES = $(DEPS) +testHTML_LDADD= $(LDADDS) + +xmlcatalog_SOURCES=xmlcatalog.c +xmlcatalog_LDFLAGS = +xmlcatalog_DEPENDENCIES = $(DEPS) +xmlcatalog_LDADD= @RDL_LIBS@ $(LDADDS) + +testXPath_SOURCES=testXPath.c +testXPath_LDFLAGS = +testXPath_DEPENDENCIES = $(DEPS) +testXPath_LDADD= $(LDADDS) + +testC14N_SOURCES=testC14N.c +testC14N_LDFLAGS = +testC14N_DEPENDENCIES = $(DEPS) +testC14N_LDADD= $(LDADDS) + +testThreads_SOURCES=testThreads@THREADS_W32@.c +testThreads_LDFLAGS = +testThreads_DEPENDENCIES = $(DEPS) +testThreads_LDADD= @BASE_THREAD_LIBS@ $(LDADDS) + +testURI_SOURCES=testURI.c +testURI_LDFLAGS = +testURI_DEPENDENCIES = $(DEPS) +testURI_LDADD= $(LDADDS) + +testRegexp_SOURCES=testRegexp.c +testRegexp_LDFLAGS = +testRegexp_DEPENDENCIES = $(DEPS) +testRegexp_LDADD= $(LDADDS) + +testAutomata_SOURCES=testAutomata.c +testAutomata_LDFLAGS = +testAutomata_DEPENDENCIES = $(DEPS) +testAutomata_LDADD= $(LDADDS) + +testSchemas_SOURCES=testSchemas.c +testSchemas_LDFLAGS = +testSchemas_DEPENDENCIES = $(DEPS) +testSchemas_LDADD= $(LDADDS) + +testRelax_SOURCES=testRelax.c +testRelax_LDFLAGS = +testRelax_DEPENDENCIES = $(DEPS) +testRelax_LDADD= $(LDADDS) + +testReader_SOURCES=testReader.c +testReader_LDFLAGS = +testReader_DEPENDENCIES = $(DEPS) +testReader_LDADD= $(LDADDS) + +testModule_SOURCES=testModule.c +testModule_LDFLAGS = +testModule_DEPENDENCIES = $(DEPS) +testModule_LDADD= $(LDADDS) + +noinst_LTLIBRARIES = testdso.la +testdso_la_SOURCES = testdso.c +testdso_la_LDFLAGS = -module -no-undefined -avoid-version -rpath $(libdir) + +# that one forces the rebuild when "make rebuild" is run on doc/ +rebuild_testapi: + -@(if [ "$(PYTHON)" != "" ] ; then \ + $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi ) + +# that one is just to make sure it is rebuilt if missing +# but adding the dependances generate mess +testapi.c: $(srcdir)/gentest.py + -@(if [ "$(PYTHON)" != "" ] ; then \ + $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi ) + +testapi_SOURCES=testapi.c +testapi_LDFLAGS = +testapi_DEPENDENCIES = $(DEPS) +testapi_LDADD= $(LDADDS) + +runxmlconf_SOURCES=runxmlconf.c +runxmlconf_LDFLAGS = +runxmlconf_DEPENDENCIES = $(DEPS) +runxmlconf_LDADD= $(LDADDS) + +#testOOM_SOURCES=testOOM.c testOOMlib.h testOOMlib.c +#testOOM_LDFLAGS = +#testOOM_DEPENDENCIES = $(DEPS) +#testOOM_LDADD= $(LDADDS) + +runtests: + $(CHECKER) ./runtest$(EXEEXT) && $(CHECKER) ./testrecurse$(EXEEXT) &&$(CHECKER) ./testapi$(EXEEXT) && $(CHECKER) ./testchar$(EXEEXT)&& $(CHECKER) ./testdict$(EXEEXT) && $(CHECKER) ./runxmlconf$(EXEEXT) + @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ + $(MAKE) MAKEFLAGS+=--silent tests ; fi) + +check: all runtests + +check-valgrind: all + @echo '## Running the regression tests under Valgrind' + @echo '## Go get a cup of coffee it is gonna take a while ...' + $(MAKE) CHECKER='valgrind -q' check + +testall : tests SVGtests SAXtests + +tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ + @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ + $(MAKE) MAKEFLAGS+=--silent tests ; fi) + @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests) + +valgrind: + @echo '## Running the regression tests under Valgrind' + @echo '## Go get a cup of coffee it is gonna take a while ...' + $(MAKE) CHECKER='valgrind -q' tests + +APItests: testapi$(EXEEXT) + @echo "## Running the API regression tests this may take a little while" + -@($(CHECKER) $(top_builddir)/testapi -q) + +HTMLtests : testHTML$(EXEEXT) + @(echo > .memdump) + @echo "## HTML regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML $$i > $(srcdir)/result/HTML/$$name 2>$(srcdir)/result/HTML/$$name.err ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML $$i > result.$$name 2> error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name result.$$name ; \ + diff -b $(srcdir)/result/HTML/$$name.err error.$$name ; \ + $(CHECKER) $(top_builddir)/testHTML result.$$name > result2.$$name 2>error.$$name ; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name error.$$name ; \ + fi ; fi ; done) + +HTMLPushtests : testHTML$(EXEEXT) + @echo "## Push HTML regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push $$i > $(srcdir)/result/HTML/$$name 2>$(srcdir)/result/HTML/$$name.err ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --push $$i > result.$$name 2> error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name result.$$name ; \ + cut -b 1-15 $(srcdir)/result/HTML/$$name.err > errorcut.$$name; \ + cut -b 1-15 error.$$name > errorcut2.$$name; \ + diff -b errorcut.$$name errorcut2.$$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push result.$$name > result2.$$name 2>error.$$name ; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name error.$$name errorcut.$$name errorcut2.$$name ; \ + fi ; fi ; done) + @echo "## HTML SAX regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name.sax ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --sax $$i > $(srcdir)/result/HTML/$$name.sax ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --sax $$i > result.$$name.sax ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name.sax result.$$name.sax` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name.sax ; \ + fi ; fi ; done) + @echo "## Push HTML SAX regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push --sax $$i > $(srcdir)/result/HTML/$$name.sax ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --push --sax $$i 2>&1 > result.$$name.sax ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name.sax result.$$name.sax` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name.sax ; \ + fi ; fi ; done) + +XMLtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ;\ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + @echo "## XML regression tests on memory" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --memory $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"`; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + diff result.$$name result2.$$name ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +XMLPushtests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML push regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --push $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --push $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --push result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +NStests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML Namespaces regression tests" + -@(for i in $(srcdir)/test/namespaces/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/namespaces/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i \ + 2> $(srcdir)/result/namespaces/$$name.err \ + > $(srcdir)/result/namespaces/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/namespaces/$$name result.$$name ; \ + diff $(srcdir)/result/namespaces/$$name.err error.$$name`; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +IDtests : xmllint$(EXEEXT) testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## xml:id regression tests" + -@(for i in $(srcdir)/test/xmlid/id_*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/xmlid/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -i $$i "id('bar')" \ + 2> $(srcdir)/result/xmlid/$$name.err \ + > $(srcdir)/result/xmlid/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -i $$i "id('bar')" 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/xmlid/$$name result.$$name ; \ + diff $(srcdir)/result/xmlid/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Errtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Error cases regression tests" + -@(for i in $(srcdir)/test/errors/*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/errors/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i \ + 2> $(srcdir)/result/errors/$$name.err \ + > $(srcdir)/result/errors/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/errors/$$name result.$$name ; \ + diff $(srcdir)/result/errors/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + @echo "## Error cases stream regression tests" + -@(for i in $(srcdir)/test/errors/*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/errors/$$name.str ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --stream $$i \ + 2> $(srcdir)/result/errors/$$name.str \ + > /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --stream $$i 2> error.$$name > /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/errors/$$name.str error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm error.$$name ; \ + fi ; fi ; done) + +Docbtests : xmllint$(EXEEXT) + +XMLenttests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML entity subst regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/noent/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent $$i > $(srcdir)/result/noent/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noent $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/noent/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent result.$$name 2>&1 > result2.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +URItests : testURI$(EXEEXT) + @(echo > .memdump) + @echo "## URI module regression tests" + -@(for i in $(srcdir)/test/URI/*.data ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/URI/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testURI -base 'http://foo.com/path/to/index.html?orig#help' < $$i > $(srcdir)/result/URI/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testURI -base 'http://foo.com/path/to/index.html?orig#help' < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/URI/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/URI/*.uri ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/URI/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testURI < $$i > $(srcdir)/result/URI/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testURI < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/URI/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +XPathtests : testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## XPath regression tests" + -@(if [ "`$(top_builddir)/testXPath | grep 'support not compiled in'`" != "" ] ; \ + then echo Skipping debug not compiled in ; exit 0 ; fi ; \ + for i in $(srcdir)/test/XPath/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XPath/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -f --expr $$i > $(srcdir)/result/XPath/expr/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -f --expr $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; \ + for i in $(srcdir)/test/XPath/docs/* ; do \ + if [ ! -d $$i ] ; then \ + doc=`basename $$i`; \ + for j in $(srcdir)/test/XPath/tests/$$doc* ; do \ + if [ ! -f $$j ] ; then continue ; fi ; \ + name=`basename $$j`; \ + if [ ! -d $$j ] ; then \ + if [ ! -f $(srcdir)/result/XPath/tests/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -f -i $$i $$j > $(srcdir)/result/XPath/tests/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -f -i $$i $$j 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/tests/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; fi ; done) + +XPtrtests : testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## XPointer regression tests" + -@(if [ "`$(top_builddir)/testXPath | grep 'support not compiled in'`" != "" ] ; \ + then echo Skipping debug not compiled in ; exit 0 ; fi ; \ + for i in $(srcdir)/test/XPath/docs/* ; do \ + if [ ! -d $$i ] ; then \ + doc=`basename $$i`; \ + for j in $(srcdir)/test/XPath/xptr/$$doc* ; do \ + if [ ! -f $$j ] ; then continue ; fi ; \ + name=`basename $$j`; \ + if [ ! -d $$j ] ; then \ + if [ ! -f $(srcdir)/result/XPath/xptr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -xptr -f -i $$i $$j > $(srcdir)/result/XPath/xptr/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -xptr -f -i $$i $$j 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/xptr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; fi ; done) + +XIncludetests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XInclude regression tests" + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude $$i > $(srcdir)/result/XInclude/$$name 2> $(srcdir)/result/XInclude/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name result.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode $$i > $(srcdir)/result/XInclude/$$name 2> $(srcdir)/result/XInclude/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name result.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + @(echo > .memdump) + @echo "## XInclude xmlReader regression tests" + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > $(srcdir)/result/XInclude/$$name.rdr ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name.err error.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode --stream --debug $$i > $(srcdir)/result/XInclude/$$name.rdr ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name.err error.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Scripttests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Scripts regression tests" + @echo "## Some of the base computations may be different if srcdir != ." + -@(for i in $(srcdir)/test/scripts/*.script ; do \ + name=`basename $$i .script`; \ + xml=$(srcdir)/test/scripts/`basename $$i .script`.xml; \ + if [ -f $$xml ] ; then \ + if [ ! -f $(srcdir)/result/scripts/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --shell $$xml < $$i > $(srcdir)/result/scripts/$$name 2> $(srcdir)/result/scripts/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --shell $$xml < $$i > result.$$name 2> result.$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/scripts/$$name result.$$name ; \ + diff $(srcdir)/result/scripts/$$name.err result.$$name.err` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result.$$name.err ; \ + fi ; fi ; done) + +Catatests : xmlcatalog$(EXEEXT) + @(echo > .memdump) + @echo "## Catalog regression tests" + -@(for i in $(srcdir)/test/catalogs/*.script ; do \ + name=`basename $$i .script`; \ + xml=$(srcdir)/test/catalogs/`basename $$i .script`.xml; \ + if [ -f $$xml ] ; then \ + if [ ! -f $(srcdir)/result/catalogs/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmlcatalog --shell $$xml < $$i 2>&1 > $(srcdir)/result/catalogs/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmlcatalog --shell $$xml < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/catalogs/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/catalogs/*.script ; do \ + name=`basename $$i .script`; \ + sgml=$(srcdir)/test/catalogs/`basename $$i .script`.sgml; \ + if [ -f $$sgml ] ; then \ + if [ ! -f $(srcdir)/result/catalogs/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmlcatalog --shell $$sgml < $$i > $(srcdir)/result/catalogs/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmlcatalog --shell $$sgml < $$i > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/catalogs/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Add and del operations on XML Catalogs" + -@($(CHECKER) $(top_builddir)/xmlcatalog --create --noout $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid sysid $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid2 sysid2 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid3 sysid3 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result/catalogs/mycatalog.full $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid3 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid2 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result/catalogs/mycatalog.empty $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + rm -f $(srcdir)/result/catalogs/mycatalog) + +SVGtests : xmllint$(EXEEXT) + @echo "## SVG parsing regression tests" + -@(for i in $(srcdir)/test/SVG/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/SVG/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > $(srcdir)/result/SVG/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + echo Testing $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/SVG/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint result.$$name > result2.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff result.$$name result2.$$name ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +Threadtests : testThreads$(EXEEXT) + @echo "## Threaded regression tests" + -@($(CHECKER) $(top_builddir)/testThreads ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + exit 0) + +Readertests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Reader regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nonet --debug --stream $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Reader on memory regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory --nonet --debug --stream $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --memory --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @(echo > .memdump) + @echo "## Walker regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nonet --debug --walker $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nonet --debug --walker $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Reader entities substitution regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rde ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent --nonet --debug --stream $$i > $(srcdir)/result/$$name.rde 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noent --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rde result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +SAXtests : testSAX$(EXEEXT) + @(echo > .memdump) + @echo "## SAX1 callbacks regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.sax ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testSAX $$i > $(srcdir)/result/$$name.sax 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSAX $$i > result.$$name 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.sax result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## SAX2 callbacks regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.sax2 ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testSAX --sax2 $$i > $(srcdir)/result/$$name.sax2 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSAX --sax2 $$i > result.$$name 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.sax2 result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +Validtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Valid documents regression tests" + -@(for i in $(srcdir)/test/VCM/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + log=`$(CHECKER) $(top_builddir)/xmllint --valid --noout --nowarning $$i ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"`;\ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + fi ; done ; exit 0) + @echo "## Validity checking regression tests" + -@(for i in $(srcdir)/test/VC/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/VC/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noout --valid $$i 2> $(srcdir)/result/VC/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noout --valid $$i 2> result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/VC/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## General documents valid regression tests" + -@(for i in $(srcdir)/test/valid/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/valid/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --valid $$i > $(srcdir)/result/valid/$$name 2>$(srcdir)/result/valid/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --valid $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/valid/$$name result.$$name ; \ + diff $(srcdir)/result/valid/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Regexptests: testRegexp$(EXEEXT) + @(echo > .memdump) + @echo "## Regexp regression tests" + -@(for i in $(srcdir)/test/regexp/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/regexp/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp -i $$i > $(srcdir)/result/regexp/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/regexp/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Formal expresssions regression tests" + -@(for i in $(srcdir)/test/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp --expr -i $$i > $(srcdir)/result/expr/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp --expr -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +Automatatests: testAutomata$(EXEEXT) + @(echo > .memdump) + @echo "## Automata regression tests" + -@(for i in $(srcdir)/test/automata/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/automata/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testAutomata $$i > $(srcdir)/result/automata/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testAutomata $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/automata/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +dba100000.xml: dbgenattr.pl + @echo "## generating dba100000.xml" + @($(PERL) $(top_srcdir)/dbgenattr.pl 100000 > dba100000.xml) + +Timingtests: xmllint$(EXEEXT) dba100000.xml + @echo "## Timing tests to try to detect performance" + @echo "## as well a memory usage breakage when streaming" + @echo "## 1/ using the file interface" + @echo "## 2/ using the memory interface" + @echo "## 3/ repeated DOM parsing" + @echo "## 4/ repeated DOM validation" + -@($(top_builddir)/xmllint --stream --timing dba100000.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + -@($(top_builddir)/xmllint --stream --timing --memory dba100000.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + -@($(top_builddir)/xmllint --noout --timing --repeat $(srcdir)/test/valid/REC-xml-19980210.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + +VTimingtests: xmllint$(EXEEXT) + -@($(top_builddir)/xmllint --noout --timing --valid --repeat $(srcdir)/test/valid/REC-xml-19980210.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + +C14Ntests : testC14N$(EXEEXT) + @echo "## C14N and XPath regression tests" + -@(for m in with-comments without-comments 1-1-without-comments exc-without-comments ; do \ + for i in $(srcdir)/test/c14n/$$m/*.xml ; do \ + if [ ! -d $$i ] ; then \ + name=`basename $$i .xml`; \ + cmdline="$(CHECKER) $(top_builddir)/testC14N --$$m $$i"; \ + if [ -f $(srcdir)/test/c14n/$$m/$$name.xpath ] ; then \ + cmdline="$$cmdline $(srcdir)/test/c14n/$$m/$$name.xpath"; \ + if [ -f $(srcdir)/test/c14n/$$m/$$name.ns ] ; then \ + cmdline="$$cmdline '`cat $(srcdir)/test/c14n/$$m/$$name.ns`'"; \ + fi; \ + fi; \ + $$cmdline > $(srcdir)/test/c14n/test.tmp; \ + if [ $$? -eq 0 ]; then \ + diff $(srcdir)/result/c14n/$$m/$$name $(srcdir)/test/c14n/test.tmp; \ + if [ $$? -ne 0 ]; then \ + echo "Test $$m/$$name failed"; \ + cat $(srcdir)/test/c14n/test.tmp; \ + fi; \ + else \ + echo "C14N failed"; \ + fi; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + fi; \ + rm -f $(srcdir)/test/c14n/test.tmp; \ + done; \ + done) + +Schemastests: testSchemas$(EXEEXT) + @(echo > .memdump) + @echo "## Schemas regression tests" + -@(for i in $(srcdir)/test/schemas/*_*.xsd ; do \ + name=`basename $$i | sed 's+_.*++'`; \ + sno=`basename $$i | sed 's+.*_\(.*\).xsd+\1+'`; \ + for j in $(srcdir)/test/schemas/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$sno"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/testSchemas $$i $$j \ + > $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" \ + 2> $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSchemas $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno".err \ + err.$$name;\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$sno"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ;\ + done; done) + +Relaxtests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Relax-NG regression tests" + -@(for i in $(srcdir)/test/relaxng/*.rng ; do \ + name=`basename $$i | sed 's+\.rng++'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_valid ] ; then \ + echo New schemas $$name ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $(srcdir)/test/relaxng/tutorA.rng $$i \ + > $(srcdir)/result/relaxng/"$$name"_valid \ + 2> $(srcdir)/result/relaxng/"$$name"_err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $(srcdir)/test/relaxng/tutorA.rng $$i \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_valid \ + res.$$name;\ + diff $(srcdir)/result/relaxng/"$$name"_err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo schemas $$name result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi; \ + for j in $(srcdir)/test/relaxng/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + 2> $(srcdir)/result/relaxng/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + @echo "## Relax-NG streaming regression tests" + -@(for i in $(srcdir)/test/relaxng/*.rng ; do \ + name=`basename $$i | sed 's+\.rng++'`; \ + for j in $(srcdir)/test/relaxng/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + 2> $(srcdir)/result/relaxng/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --stream --relaxng $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno" res.$$name;\ + if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" -a "$$name" != "tutor8_2" ] ; then \ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + fi ; grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + +Schematrontests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Schematron regression tests" + -@(for i in $(srcdir)/test/schematron/*.sct ; do \ + name=`basename $$i | sed 's+\.sct++'`; \ + for j in $(srcdir)/test/schematron/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schematron/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > $(srcdir)/result/schematron/"$$name"_"$$xno" \ + 2> $(srcdir)/result/schematron/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + +RelaxNGPythonTests: + @(if [ -x $(PYTHON) ] ; then \ + PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH ; \ + export PYTHONPATH; \ + LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \ + export LD_LIBRARY_PATH; \ + echo "## Relax-NG Python based test suite 1" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-relaxng-test-suite.py ; \ + echo "## Relax-NG Python based test suite 2" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-relaxng-test-suite2.py ; \ + fi) + +SchemasPythonTests: + @(if [ -x $(PYTHON) ] ; then \ + PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH; \ + export PYTHONPATH; \ + LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \ + export LD_LIBRARY_PATH; \ + echo "## XML Schemas datatypes Python based test suite" ; \ + echo "## It is normal to see 11 errors reported" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \ + fi) + @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi) + +Patterntests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Pattern regression tests" + -@(for i in $(srcdir)/test/pattern/*.pat ; do \ + name=`basename $$i .pat`; \ + if [ -f $(srcdir)/test/pattern/$$name.xml ] ; then \ + if [ ! -f $(srcdir)/result/pattern/$$name ] ; then \ + rm -f result.$$name ; \ + echo New test file $$name ; \ + for pat in `cat $$i` ; do \ + $(CHECKER) $(top_builddir)/xmllint --walker --pattern $$pat $(srcdir)/test/pattern/$$name.xml >> $(srcdir)/result/pattern/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + done ;\ + else \ + rm -f result.$$name ; \ + lst=`cat $$i` ; \ + log=`for pat in $$lst ; do $(CHECKER) $(top_builddir)/xmllint --walker --pattern $$pat $(srcdir)/test/pattern/$$name.xml 2>&1 >> result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + done ;\ + diff $(srcdir)/result/pattern/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ;) + +ModuleTests: testModule$(EXEEXT) testdso.la + @echo "## Module tests" + @(./testModule$(EXEEXT)) + +cleanup: + -@(find . -name .\#\* -exec rm {} \;) + -@(find . -name \*.gcda -o *.gcno -exec rm {} \;) + -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm {} \;) + +dist-hook: cleanup libxml2.spec + -cp libxml2.spec $(distdir) + (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn win32 macos vms VxWorks bakefile test result) | (cd $(distdir); tar xf -) + +dist-source: distdir + $(AMTAR) -chof - --exclude Tests --exclude test --exclude result $(distdir) | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-sources+"`.tar.gz + +dist-test: distdir + (mkdir -p $(distdir)) + (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn xstc/Tests) | (cd $(distdir); tar xf -) + tar -cf - $(distdir)/test $(distdir)/result $(distdir)/xstc/Tests $(distdir)/Makefile.tests $(distdir)/README $(distdir)/README.tests $(distdir)/AUTHORS $(distdir)/testapi.c $(distdir)/runtest.c $(distdir)/runsuite.c | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-tests+"`.tar.gz + @(rm -rf $(distdir)/xstc/Test) + +cleantar: + @(rm -f libxml*.tar.gz COPYING.LIB) + +rpm: cleanup cleantar + @(unset CDPATH ; $(MAKE) dist-source dist && rpmbuild -ta $(distdir).tar.gz) + +## We create xml2Conf.sh here and not from configure because we want +## to get the paths expanded correctly. Macros like srcdir are given +## the value NONE in configure if the user doesn't specify them (this +## is an autoconf feature, not a bug). + +xml2Conf.sh: xml2Conf.sh.in Makefile +## Use sed and then mv to avoid problems if the user interrupts. + sed -e 's?\@XML_LIBDIR\@?$(XML_LIBDIR)?g' \ + -e 's?\@XML_INCLUDEDIR\@?$(XML_INCLUDEDIR)?g' \ + -e 's?\@VERSION\@?$(VERSION)?g' \ + -e 's?\@XML_LIBS\@?$(XML_LIBS)?g' \ + < $(srcdir)/xml2Conf.sh.in > xml2Conf.tmp \ + && mv xml2Conf.tmp xml2Conf.sh + +CLEANFILES=xml2Conf.sh *.gcda *.gcno + +confexecdir=$(libdir) +confexec_DATA = xml2Conf.sh +CVS_EXTRA_DIST= +EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \ + libxml.m4 Copyright check-xml-test-suite.py gentest.py \ + check-relaxng-test-suite.py check-relaxng-test-suite2.py \ + check-xsddata-test-suite.py check-xinclude-test-suite.py \ + example/Makefile.am example/gjobread.c example/gjobs.xml \ + $(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \ + trionan.c trionan.h triostr.c triostr.h trio.c trio.h \ + triop.h triodef.h libxml.h elfgcchack.h \ + testThreadsWin32.c genUnicode.py TODO_SCHEMAS \ + dbgen.pl dbgenattr.pl regressions.py regressions.xml \ + README.tests Makefile.tests libxml2.syms \ + $(CVS_EXTRA_DIST) + + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libxml-2.0.pc + +# +# Install the tests program sources as examples +# +BASE_DIR=$(datadir)/doc +DOC_MODULE=libxml2-$(VERSION) +EXAMPLES_DIR=$(BASE_DIR)/$(DOC_MODULE)/examples + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + -@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + $(mkinstalldirs) $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR) + +uninstall-local: + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testXPath.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testHTML.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testSAX.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/xmllint.c + rm -rf $(DESTDIR)$(EXAMPLES_DIR) + rm -f $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)/Copyright + rm -rf $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + +tst: tst.c + $(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz + +sparse: clean + $(MAKE) CC=cgcc + +# +# Coverage support, largely borrowed from libvirt +# Both binaries comes from the lcov package in Fedora +# +LCOV = /usr/bin/lcov +GENHTML = /usr/bin/genhtml + +cov: clean-cov + if [ "`echo $(LDFLAGS) | grep coverage`" = "" ] ; then \ + echo not configured with coverage; exit 1 ; fi + if [ ! -x $(LCOV) -o ! -x $(GENHTML) ] ; then \ + echo Need $(LCOV) and $(GENHTML) excecutables; exit 1 ; fi + -@($(MAKE) check) + -@(./runsuite$(EXEEXT)) + mkdir $(top_builddir)/coverage + $(LCOV) -c -o $(top_builddir)/coverage/libxml2.info.tmp -d $(top_srcdir) + $(LCOV) -r $(top_builddir)/coverage/libxml2.info.tmp -o $(top_builddir)/coverage/libxml2.info *usr* + rm $(top_builddir)/coverage/libxml2.info.tmp + $(GENHTML) -s -t "libxml2" -o $(top_builddir)/coverage --legend $(top_builddir)/coverage/libxml2.info + echo "Coverage report is in $(top_builddir)/coverage/index.html" + +clean-cov: + rm -rf $(top_builddir)/coverage +
diff --git a/libxml2-2.7.7/Makefile.in b/libxml2-2.7.7/Makefile.in new file mode 100644 index 0000000..df1b84a --- /dev/null +++ b/libxml2-2.7.7/Makefile.in
@@ -0,0 +1,2745 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = testSchemas$(EXEEXT) testRelax$(EXEEXT) \ + testSAX$(EXEEXT) testHTML$(EXEEXT) testXPath$(EXEEXT) \ + testURI$(EXEEXT) testThreads$(EXEEXT) testC14N$(EXEEXT) \ + testAutomata$(EXEEXT) testRegexp$(EXEEXT) testReader$(EXEEXT) \ + testapi$(EXEEXT) testModule$(EXEEXT) runtest$(EXEEXT) \ + runsuite$(EXEEXT) testchar$(EXEEXT) testdict$(EXEEXT) \ + runxmlconf$(EXEEXT) testrecurse$(EXEEXT) +bin_PROGRAMS = xmllint$(EXEEXT) xmlcatalog$(EXEEXT) +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/libxml-2.0-uninstalled.pc.in \ + $(srcdir)/libxml-2.0.pc.in $(srcdir)/libxml.spec.in \ + $(srcdir)/xml2-config.in $(top_srcdir)/configure AUTHORS \ + COPYING ChangeLog INSTALL NEWS TODO acconfig.h config.guess \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = libxml2.spec xml2-config libxml-2.0.pc \ + libxml-2.0-uninstalled.pc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(confexecdir)" \ + "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +libxml2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__libxml2_la_SOURCES_DIST = SAX.c entities.c encoding.c error.c \ + parserInternals.c parser.c tree.c hash.c list.c xmlIO.c \ + xmlmemory.c uri.c valid.c xlink.c HTMLparser.c HTMLtree.c \ + debugXML.c xpath.c xpointer.c xinclude.c nanohttp.c nanoftp.c \ + DOCBparser.c catalog.c globals.c threads.c c14n.c xmlstring.c \ + xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ + xmlreader.c relaxng.c dict.c SAX2.c xmlwriter.c legacy.c \ + chvalid.c pattern.c xmlsave.c xmlmodule.c schematron.c \ + triostr.c trio.c +@WITH_TRIO_SOURCES_FALSE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \ +@WITH_TRIO_SOURCES_FALSE@ encoding.lo error.lo \ +@WITH_TRIO_SOURCES_FALSE@ parserInternals.lo parser.lo tree.lo \ +@WITH_TRIO_SOURCES_FALSE@ hash.lo list.lo xmlIO.lo xmlmemory.lo \ +@WITH_TRIO_SOURCES_FALSE@ uri.lo valid.lo xlink.lo \ +@WITH_TRIO_SOURCES_FALSE@ HTMLparser.lo HTMLtree.lo debugXML.lo \ +@WITH_TRIO_SOURCES_FALSE@ xpath.lo xpointer.lo xinclude.lo \ +@WITH_TRIO_SOURCES_FALSE@ nanohttp.lo nanoftp.lo DOCBparser.lo \ +@WITH_TRIO_SOURCES_FALSE@ catalog.lo globals.lo threads.lo \ +@WITH_TRIO_SOURCES_FALSE@ c14n.lo xmlstring.lo xmlregexp.lo \ +@WITH_TRIO_SOURCES_FALSE@ xmlschemas.lo xmlschemastypes.lo \ +@WITH_TRIO_SOURCES_FALSE@ xmlunicode.lo xmlreader.lo relaxng.lo \ +@WITH_TRIO_SOURCES_FALSE@ dict.lo SAX2.lo xmlwriter.lo \ +@WITH_TRIO_SOURCES_FALSE@ legacy.lo chvalid.lo pattern.lo \ +@WITH_TRIO_SOURCES_FALSE@ xmlsave.lo xmlmodule.lo schematron.lo +@WITH_TRIO_SOURCES_TRUE@am_libxml2_la_OBJECTS = SAX.lo entities.lo \ +@WITH_TRIO_SOURCES_TRUE@ encoding.lo error.lo \ +@WITH_TRIO_SOURCES_TRUE@ parserInternals.lo parser.lo tree.lo \ +@WITH_TRIO_SOURCES_TRUE@ hash.lo list.lo xmlIO.lo xmlmemory.lo \ +@WITH_TRIO_SOURCES_TRUE@ uri.lo valid.lo xlink.lo HTMLparser.lo \ +@WITH_TRIO_SOURCES_TRUE@ HTMLtree.lo debugXML.lo xpath.lo \ +@WITH_TRIO_SOURCES_TRUE@ xpointer.lo xinclude.lo nanohttp.lo \ +@WITH_TRIO_SOURCES_TRUE@ nanoftp.lo DOCBparser.lo catalog.lo \ +@WITH_TRIO_SOURCES_TRUE@ globals.lo threads.lo c14n.lo \ +@WITH_TRIO_SOURCES_TRUE@ xmlstring.lo xmlregexp.lo \ +@WITH_TRIO_SOURCES_TRUE@ xmlschemas.lo xmlschemastypes.lo \ +@WITH_TRIO_SOURCES_TRUE@ xmlunicode.lo triostr.lo trio.lo \ +@WITH_TRIO_SOURCES_TRUE@ xmlreader.lo relaxng.lo dict.lo \ +@WITH_TRIO_SOURCES_TRUE@ SAX2.lo xmlwriter.lo legacy.lo \ +@WITH_TRIO_SOURCES_TRUE@ chvalid.lo pattern.lo xmlsave.lo \ +@WITH_TRIO_SOURCES_TRUE@ xmlmodule.lo schematron.lo +libxml2_la_OBJECTS = $(am_libxml2_la_OBJECTS) +libxml2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libxml2_la_LDFLAGS) $(LDFLAGS) -o $@ +testdso_la_LIBADD = +am_testdso_la_OBJECTS = testdso.lo +testdso_la_OBJECTS = $(am_testdso_la_OBJECTS) +testdso_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testdso_la_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_runsuite_OBJECTS = runsuite.$(OBJEXT) +runsuite_OBJECTS = $(am_runsuite_OBJECTS) +am__DEPENDENCIES_2 = $(top_builddir)/libxml2.la $(am__DEPENDENCIES_1) +runsuite_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(runsuite_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_runtest_OBJECTS = runtest.$(OBJEXT) +runtest_OBJECTS = $(am_runtest_OBJECTS) +runtest_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(runtest_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_runxmlconf_OBJECTS = runxmlconf.$(OBJEXT) +runxmlconf_OBJECTS = $(am_runxmlconf_OBJECTS) +runxmlconf_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(runxmlconf_LDFLAGS) $(LDFLAGS) -o $@ +am_testAutomata_OBJECTS = testAutomata.$(OBJEXT) +testAutomata_OBJECTS = $(am_testAutomata_OBJECTS) +testAutomata_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testAutomata_LDFLAGS) $(LDFLAGS) -o $@ +am_testC14N_OBJECTS = testC14N.$(OBJEXT) +testC14N_OBJECTS = $(am_testC14N_OBJECTS) +testC14N_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testC14N_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testHTML_OBJECTS = testHTML.$(OBJEXT) +testHTML_OBJECTS = $(am_testHTML_OBJECTS) +testHTML_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testHTML_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testModule_OBJECTS = testModule.$(OBJEXT) +testModule_OBJECTS = $(am_testModule_OBJECTS) +testModule_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testModule_LDFLAGS) $(LDFLAGS) -o $@ +am_testReader_OBJECTS = testReader.$(OBJEXT) +testReader_OBJECTS = $(am_testReader_OBJECTS) +testReader_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testReader_LDFLAGS) $(LDFLAGS) -o $@ +am_testRegexp_OBJECTS = testRegexp.$(OBJEXT) +testRegexp_OBJECTS = $(am_testRegexp_OBJECTS) +testRegexp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testRegexp_LDFLAGS) $(LDFLAGS) -o $@ +am_testRelax_OBJECTS = testRelax.$(OBJEXT) +testRelax_OBJECTS = $(am_testRelax_OBJECTS) +testRelax_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testRelax_LDFLAGS) $(LDFLAGS) -o $@ +am_testSAX_OBJECTS = testSAX.$(OBJEXT) +testSAX_OBJECTS = $(am_testSAX_OBJECTS) +testSAX_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testSAX_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testSchemas_OBJECTS = testSchemas.$(OBJEXT) +testSchemas_OBJECTS = $(am_testSchemas_OBJECTS) +testSchemas_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testSchemas_LDFLAGS) $(LDFLAGS) -o $@ +am_testThreads_OBJECTS = testThreads@THREADS_W32@.$(OBJEXT) +testThreads_OBJECTS = $(am_testThreads_OBJECTS) +testThreads_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testThreads_LDFLAGS) $(LDFLAGS) -o $@ +am_testURI_OBJECTS = testURI.$(OBJEXT) +testURI_OBJECTS = $(am_testURI_OBJECTS) +testURI_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testURI_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testXPath_OBJECTS = testXPath.$(OBJEXT) +testXPath_OBJECTS = $(am_testXPath_OBJECTS) +testXPath_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testXPath_LDFLAGS) $(LDFLAGS) -o $@ +am_testapi_OBJECTS = testapi.$(OBJEXT) +testapi_OBJECTS = $(am_testapi_OBJECTS) +testapi_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testapi_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testchar_OBJECTS = testchar.$(OBJEXT) +testchar_OBJECTS = $(am_testchar_OBJECTS) +testchar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testchar_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testdict_OBJECTS = testdict.$(OBJEXT) +testdict_OBJECTS = $(am_testdict_OBJECTS) +testdict_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testdict_LDFLAGS) \ + $(LDFLAGS) -o $@ +am_testrecurse_OBJECTS = testrecurse.$(OBJEXT) +testrecurse_OBJECTS = $(am_testrecurse_OBJECTS) +testrecurse_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(testrecurse_LDFLAGS) $(LDFLAGS) -o $@ +am_xmlcatalog_OBJECTS = xmlcatalog.$(OBJEXT) +xmlcatalog_OBJECTS = $(am_xmlcatalog_OBJECTS) +xmlcatalog_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(xmlcatalog_LDFLAGS) $(LDFLAGS) -o $@ +am_xmllint_OBJECTS = xmllint.$(OBJEXT) +xmllint_OBJECTS = $(am_xmllint_OBJECTS) +xmllint_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(xmllint_LDFLAGS) \ + $(LDFLAGS) -o $@ +SCRIPTS = $(bin_SCRIPTS) +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libxml2_la_SOURCES) $(testdso_la_SOURCES) \ + $(runsuite_SOURCES) $(runtest_SOURCES) $(runxmlconf_SOURCES) \ + $(testAutomata_SOURCES) $(testC14N_SOURCES) \ + $(testHTML_SOURCES) $(testModule_SOURCES) \ + $(testReader_SOURCES) $(testRegexp_SOURCES) \ + $(testRelax_SOURCES) $(testSAX_SOURCES) $(testSchemas_SOURCES) \ + $(testThreads_SOURCES) $(testURI_SOURCES) $(testXPath_SOURCES) \ + $(testapi_SOURCES) $(testchar_SOURCES) $(testdict_SOURCES) \ + $(testrecurse_SOURCES) $(xmlcatalog_SOURCES) \ + $(xmllint_SOURCES) +DIST_SOURCES = $(am__libxml2_la_SOURCES_DIST) $(testdso_la_SOURCES) \ + $(runsuite_SOURCES) $(runtest_SOURCES) $(runxmlconf_SOURCES) \ + $(testAutomata_SOURCES) $(testC14N_SOURCES) \ + $(testHTML_SOURCES) $(testModule_SOURCES) \ + $(testReader_SOURCES) $(testRegexp_SOURCES) \ + $(testRelax_SOURCES) $(testSAX_SOURCES) $(testSchemas_SOURCES) \ + $(testThreads_SOURCES) $(testURI_SOURCES) $(testXPath_SOURCES) \ + $(testapi_SOURCES) $(testchar_SOURCES) $(testdict_SOURCES) \ + $(testrecurse_SOURCES) $(xmlcatalog_SOURCES) \ + $(xmllint_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +man1dir = $(mandir)/man1 +man3dir = $(mandir)/man3 +NROFF = nroff +MANS = $(man_MANS) +DATA = $(confexec_DATA) $(m4data_DATA) $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BASE_THREAD_LIBS = @BASE_THREAD_LIBS@ +C14N_OBJ = @C14N_OBJ@ +CATALOG_OBJ = @CATALOG_OBJ@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +CYGWIN_EXTRA_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ +CYGWIN_EXTRA_PYTHON_LIBADD = @CYGWIN_EXTRA_PYTHON_LIBADD@ +DEBUG_OBJ = @DEBUG_OBJ@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DOCB_OBJ = @DOCB_OBJ@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FTP_OBJ = @FTP_OBJ@ +GREP = @GREP@ +HAVE_ISINF = @HAVE_ISINF@ +HAVE_ISNAN = @HAVE_ISNAN@ +HTML_DIR = @HTML_DIR@ +HTML_OBJ = @HTML_OBJ@ +HTTP_OBJ = @HTTP_OBJ@ +ICONV_LIBS = @ICONV_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML_MAJOR_VERSION = @LIBXML_MAJOR_VERSION@ +LIBXML_MICRO_VERSION = @LIBXML_MICRO_VERSION@ +LIBXML_MINOR_VERSION = @LIBXML_MINOR_VERSION@ +LIBXML_VERSION = @LIBXML_VERSION@ +LIBXML_VERSION_EXTRA = @LIBXML_VERSION_EXTRA@ +LIBXML_VERSION_INFO = @LIBXML_VERSION_INFO@ +LIBXML_VERSION_NUMBER = @LIBXML_VERSION_NUMBER@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MODULE_EXTENSION = @MODULE_EXTENSION@ +MODULE_PLATFORM_LIBS = @MODULE_PLATFORM_LIBS@ +MV = @MV@ +M_LIBS = @M_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PYTHON = @PYTHON@ +PYTHON_INCLUDES = @PYTHON_INCLUDES@ +PYTHON_LIBS = @PYTHON_LIBS@ +PYTHON_SITE_PACKAGES = @PYTHON_SITE_PACKAGES@ +PYTHON_SUBDIR = @PYTHON_SUBDIR@ +PYTHON_TESTS = @PYTHON_TESTS@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RDL_LIBS = @RDL_LIBS@ +READER_TEST = @READER_TEST@ +RELDATE = @RELDATE@ +RM = @RM@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STATIC_BINARIES = @STATIC_BINARIES@ +STRIP = @STRIP@ +TAR = @TAR@ +TEST_C14N = @TEST_C14N@ +TEST_CATALOG = @TEST_CATALOG@ +TEST_DEBUG = @TEST_DEBUG@ +TEST_HTML = @TEST_HTML@ +TEST_MODULES = @TEST_MODULES@ +TEST_PATTERN = @TEST_PATTERN@ +TEST_PHTML = @TEST_PHTML@ +TEST_PUSH = @TEST_PUSH@ +TEST_REGEXPS = @TEST_REGEXPS@ +TEST_SAX = @TEST_SAX@ +TEST_SCHEMAS = @TEST_SCHEMAS@ +TEST_SCHEMATRON = @TEST_SCHEMATRON@ +TEST_THREADS = @TEST_THREADS@ +TEST_VALID = @TEST_VALID@ +TEST_VTIME = @TEST_VTIME@ +TEST_XINCLUDE = @TEST_XINCLUDE@ +TEST_XPATH = @TEST_XPATH@ +TEST_XPTR = @TEST_XPTR@ +THREADS_W32 = @THREADS_W32@ +THREAD_CFLAGS = @THREAD_CFLAGS@ +THREAD_LIBS = @THREAD_LIBS@ +U = @U@ +VERSION = @VERSION@ +VERSION_SCRIPT_FLAGS = @VERSION_SCRIPT_FLAGS@ +WGET = @WGET@ +WIN32_EXTRA_LDFLAGS = @WIN32_EXTRA_LDFLAGS@ +WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@ +WITH_C14N = @WITH_C14N@ +WITH_CATALOG = @WITH_CATALOG@ +WITH_DEBUG = @WITH_DEBUG@ +WITH_DOCB = @WITH_DOCB@ +WITH_FTP = @WITH_FTP@ +WITH_HTML = @WITH_HTML@ +WITH_HTTP = @WITH_HTTP@ +WITH_ICONV = @WITH_ICONV@ +WITH_ISO8859X = @WITH_ISO8859X@ +WITH_LEGACY = @WITH_LEGACY@ +WITH_MEM_DEBUG = @WITH_MEM_DEBUG@ +WITH_MODULES = @WITH_MODULES@ +WITH_OUTPUT = @WITH_OUTPUT@ +WITH_PATTERN = @WITH_PATTERN@ +WITH_PUSH = @WITH_PUSH@ +WITH_READER = @WITH_READER@ +WITH_REGEXPS = @WITH_REGEXPS@ +WITH_RUN_DEBUG = @WITH_RUN_DEBUG@ +WITH_SAX1 = @WITH_SAX1@ +WITH_SCHEMAS = @WITH_SCHEMAS@ +WITH_SCHEMATRON = @WITH_SCHEMATRON@ +WITH_THREADS = @WITH_THREADS@ +WITH_TREE = @WITH_TREE@ +WITH_TRIO = @WITH_TRIO@ +WITH_VALID = @WITH_VALID@ +WITH_WRITER = @WITH_WRITER@ +WITH_XINCLUDE = @WITH_XINCLUDE@ +WITH_XPATH = @WITH_XPATH@ +WITH_XPTR = @WITH_XPTR@ +WITH_ZLIB = @WITH_ZLIB@ +XINCLUDE_OBJ = @XINCLUDE_OBJ@ +XMLLINT = @XMLLINT@ +XML_CFLAGS = @XML_CFLAGS@ +XML_INCLUDEDIR = @XML_INCLUDEDIR@ +XML_LIBDIR = @XML_LIBDIR@ +XML_LIBS = @XML_LIBS@ +XML_LIBTOOLLIBS = @XML_LIBTOOLLIBS@ +XPATH_OBJ = @XPATH_OBJ@ +XPTR_OBJ = @XPTR_OBJ@ +XSLTPROC = @XSLTPROC@ +Z_CFLAGS = @Z_CFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = include . doc example xstc @PYTHON_SUBDIR@ +DIST_SUBDIRS = include . doc example python xstc +INCLUDES = -I$(top_builddir)/include -I@srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@ +bin_SCRIPTS = xml2-config +lib_LTLIBRARIES = libxml2.la +libxml2_la_LIBADD = @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@ +@USE_VERSION_SCRIPT_FALSE@LIBXML2_VERSION_SCRIPT = +@USE_VERSION_SCRIPT_TRUE@LIBXML2_VERSION_SCRIPT = $(VERSION_SCRIPT_FLAGS)$(srcdir)/libxml2.syms +libxml2_la_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@ @WIN32_EXTRA_LDFLAGS@ \ + $(LIBXML2_VERSION_SCRIPT) \ + -version-info @LIBXML_VERSION_INFO@ \ + @MODULE_PLATFORM_LIBS@ + +@WITH_TRIO_SOURCES_FALSE@libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ +@WITH_TRIO_SOURCES_FALSE@ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ +@WITH_TRIO_SOURCES_FALSE@ valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \ +@WITH_TRIO_SOURCES_FALSE@ xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \ +@WITH_TRIO_SOURCES_FALSE@ catalog.c globals.c threads.c c14n.c xmlstring.c \ +@WITH_TRIO_SOURCES_FALSE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ +@WITH_TRIO_SOURCES_FALSE@ xmlreader.c relaxng.c dict.c SAX2.c \ +@WITH_TRIO_SOURCES_FALSE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ +@WITH_TRIO_SOURCES_FALSE@ xmlmodule.c schematron.c + +@WITH_TRIO_SOURCES_TRUE@libxml2_la_SOURCES = SAX.c entities.c encoding.c error.c parserInternals.c \ +@WITH_TRIO_SOURCES_TRUE@ parser.c tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c \ +@WITH_TRIO_SOURCES_TRUE@ valid.c xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c \ +@WITH_TRIO_SOURCES_TRUE@ xpointer.c xinclude.c nanohttp.c nanoftp.c DOCBparser.c \ +@WITH_TRIO_SOURCES_TRUE@ catalog.c globals.c threads.c c14n.c xmlstring.c \ +@WITH_TRIO_SOURCES_TRUE@ xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c \ +@WITH_TRIO_SOURCES_TRUE@ triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c \ +@WITH_TRIO_SOURCES_TRUE@ xmlwriter.c legacy.c chvalid.c pattern.c xmlsave.c \ +@WITH_TRIO_SOURCES_TRUE@ xmlmodule.c schematron.c + +DEPS = $(top_builddir)/libxml2.la +LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) @M_LIBS@ @WIN32_EXTRA_LIBADD@ +man_MANS = xml2-config.1 libxml.3 +m4datadir = $(datadir)/aclocal +m4data_DATA = libxml.m4 +runtest_SOURCES = runtest.c +runtest_LDFLAGS = +runtest_DEPENDENCIES = $(DEPS) +runtest_LDADD = @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS) +testrecurse_SOURCES = testrecurse.c +testrecurse_LDFLAGS = +testrecurse_DEPENDENCIES = $(DEPS) +testrecurse_LDADD = @BASE_THREAD_LIBS@ @RDL_LIBS@ $(LDADDS) +testchar_SOURCES = testchar.c +testchar_LDFLAGS = +testchar_DEPENDENCIES = $(DEPS) +testchar_LDADD = @RDL_LIBS@ $(LDADDS) +testdict_SOURCES = testdict.c +testdict_LDFLAGS = +testdict_DEPENDENCIES = $(DEPS) +testdict_LDADD = @RDL_LIBS@ $(LDADDS) +runsuite_SOURCES = runsuite.c +runsuite_LDFLAGS = +runsuite_DEPENDENCIES = $(DEPS) +runsuite_LDADD = @RDL_LIBS@ $(LDADDS) +xmllint_SOURCES = xmllint.c +xmllint_LDFLAGS = +xmllint_DEPENDENCIES = $(DEPS) +xmllint_LDADD = @RDL_LIBS@ $(LDADDS) +testSAX_SOURCES = testSAX.c +testSAX_LDFLAGS = +testSAX_DEPENDENCIES = $(DEPS) +testSAX_LDADD = $(LDADDS) +testHTML_SOURCES = testHTML.c +testHTML_LDFLAGS = +testHTML_DEPENDENCIES = $(DEPS) +testHTML_LDADD = $(LDADDS) +xmlcatalog_SOURCES = xmlcatalog.c +xmlcatalog_LDFLAGS = +xmlcatalog_DEPENDENCIES = $(DEPS) +xmlcatalog_LDADD = @RDL_LIBS@ $(LDADDS) +testXPath_SOURCES = testXPath.c +testXPath_LDFLAGS = +testXPath_DEPENDENCIES = $(DEPS) +testXPath_LDADD = $(LDADDS) +testC14N_SOURCES = testC14N.c +testC14N_LDFLAGS = +testC14N_DEPENDENCIES = $(DEPS) +testC14N_LDADD = $(LDADDS) +testThreads_SOURCES = testThreads@THREADS_W32@.c +testThreads_LDFLAGS = +testThreads_DEPENDENCIES = $(DEPS) +testThreads_LDADD = @BASE_THREAD_LIBS@ $(LDADDS) +testURI_SOURCES = testURI.c +testURI_LDFLAGS = +testURI_DEPENDENCIES = $(DEPS) +testURI_LDADD = $(LDADDS) +testRegexp_SOURCES = testRegexp.c +testRegexp_LDFLAGS = +testRegexp_DEPENDENCIES = $(DEPS) +testRegexp_LDADD = $(LDADDS) +testAutomata_SOURCES = testAutomata.c +testAutomata_LDFLAGS = +testAutomata_DEPENDENCIES = $(DEPS) +testAutomata_LDADD = $(LDADDS) +testSchemas_SOURCES = testSchemas.c +testSchemas_LDFLAGS = +testSchemas_DEPENDENCIES = $(DEPS) +testSchemas_LDADD = $(LDADDS) +testRelax_SOURCES = testRelax.c +testRelax_LDFLAGS = +testRelax_DEPENDENCIES = $(DEPS) +testRelax_LDADD = $(LDADDS) +testReader_SOURCES = testReader.c +testReader_LDFLAGS = +testReader_DEPENDENCIES = $(DEPS) +testReader_LDADD = $(LDADDS) +testModule_SOURCES = testModule.c +testModule_LDFLAGS = +testModule_DEPENDENCIES = $(DEPS) +testModule_LDADD = $(LDADDS) +noinst_LTLIBRARIES = testdso.la +testdso_la_SOURCES = testdso.c +testdso_la_LDFLAGS = -module -no-undefined -avoid-version -rpath $(libdir) +testapi_SOURCES = testapi.c +testapi_LDFLAGS = +testapi_DEPENDENCIES = $(DEPS) +testapi_LDADD = $(LDADDS) +runxmlconf_SOURCES = runxmlconf.c +runxmlconf_LDFLAGS = +runxmlconf_DEPENDENCIES = $(DEPS) +runxmlconf_LDADD = $(LDADDS) +CLEANFILES = xml2Conf.sh *.gcda *.gcno +confexecdir = $(libdir) +confexec_DATA = xml2Conf.sh +CVS_EXTRA_DIST = +EXTRA_DIST = xml2-config.in xml2Conf.sh.in libxml.spec.in libxml2.spec \ + libxml.m4 Copyright check-xml-test-suite.py gentest.py \ + check-relaxng-test-suite.py check-relaxng-test-suite2.py \ + check-xsddata-test-suite.py check-xinclude-test-suite.py \ + example/Makefile.am example/gjobread.c example/gjobs.xml \ + $(man_MANS) libxml-2.0.pc.in libxml-2.0-uninstalled.pc.in \ + trionan.c trionan.h triostr.c triostr.h trio.c trio.h \ + triop.h triodef.h libxml.h elfgcchack.h \ + testThreadsWin32.c genUnicode.py TODO_SCHEMAS \ + dbgen.pl dbgenattr.pl regressions.py regressions.xml \ + README.tests Makefile.tests libxml2.syms \ + $(CVS_EXTRA_DIST) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libxml-2.0.pc + +# +# Install the tests program sources as examples +# +BASE_DIR = $(datadir)/doc +DOC_MODULE = libxml2-$(VERSION) +EXAMPLES_DIR = $(BASE_DIR)/$(DOC_MODULE)/examples + +# +# Coverage support, largely borrowed from libvirt +# Both binaries comes from the lcov package in Fedora +# +LCOV = /usr/bin/lcov +GENHTML = /usr/bin/genhtml +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) $(top_srcdir)/acconfig.h + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +libxml2.spec: $(top_builddir)/config.status $(srcdir)/libxml.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +xml2-config: $(top_builddir)/config.status $(srcdir)/xml2-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libxml-2.0.pc: $(top_builddir)/config.status $(srcdir)/libxml-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libxml-2.0-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/libxml-2.0-uninstalled.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libxml2.la: $(libxml2_la_OBJECTS) $(libxml2_la_DEPENDENCIES) + $(libxml2_la_LINK) -rpath $(libdir) $(libxml2_la_OBJECTS) $(libxml2_la_LIBADD) $(LIBS) +testdso.la: $(testdso_la_OBJECTS) $(testdso_la_DEPENDENCIES) + $(testdso_la_LINK) $(testdso_la_OBJECTS) $(testdso_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +runsuite$(EXEEXT): $(runsuite_OBJECTS) $(runsuite_DEPENDENCIES) + @rm -f runsuite$(EXEEXT) + $(runsuite_LINK) $(runsuite_OBJECTS) $(runsuite_LDADD) $(LIBS) +runtest$(EXEEXT): $(runtest_OBJECTS) $(runtest_DEPENDENCIES) + @rm -f runtest$(EXEEXT) + $(runtest_LINK) $(runtest_OBJECTS) $(runtest_LDADD) $(LIBS) +runxmlconf$(EXEEXT): $(runxmlconf_OBJECTS) $(runxmlconf_DEPENDENCIES) + @rm -f runxmlconf$(EXEEXT) + $(runxmlconf_LINK) $(runxmlconf_OBJECTS) $(runxmlconf_LDADD) $(LIBS) +testAutomata$(EXEEXT): $(testAutomata_OBJECTS) $(testAutomata_DEPENDENCIES) + @rm -f testAutomata$(EXEEXT) + $(testAutomata_LINK) $(testAutomata_OBJECTS) $(testAutomata_LDADD) $(LIBS) +testC14N$(EXEEXT): $(testC14N_OBJECTS) $(testC14N_DEPENDENCIES) + @rm -f testC14N$(EXEEXT) + $(testC14N_LINK) $(testC14N_OBJECTS) $(testC14N_LDADD) $(LIBS) +testHTML$(EXEEXT): $(testHTML_OBJECTS) $(testHTML_DEPENDENCIES) + @rm -f testHTML$(EXEEXT) + $(testHTML_LINK) $(testHTML_OBJECTS) $(testHTML_LDADD) $(LIBS) +testModule$(EXEEXT): $(testModule_OBJECTS) $(testModule_DEPENDENCIES) + @rm -f testModule$(EXEEXT) + $(testModule_LINK) $(testModule_OBJECTS) $(testModule_LDADD) $(LIBS) +testReader$(EXEEXT): $(testReader_OBJECTS) $(testReader_DEPENDENCIES) + @rm -f testReader$(EXEEXT) + $(testReader_LINK) $(testReader_OBJECTS) $(testReader_LDADD) $(LIBS) +testRegexp$(EXEEXT): $(testRegexp_OBJECTS) $(testRegexp_DEPENDENCIES) + @rm -f testRegexp$(EXEEXT) + $(testRegexp_LINK) $(testRegexp_OBJECTS) $(testRegexp_LDADD) $(LIBS) +testRelax$(EXEEXT): $(testRelax_OBJECTS) $(testRelax_DEPENDENCIES) + @rm -f testRelax$(EXEEXT) + $(testRelax_LINK) $(testRelax_OBJECTS) $(testRelax_LDADD) $(LIBS) +testSAX$(EXEEXT): $(testSAX_OBJECTS) $(testSAX_DEPENDENCIES) + @rm -f testSAX$(EXEEXT) + $(testSAX_LINK) $(testSAX_OBJECTS) $(testSAX_LDADD) $(LIBS) +testSchemas$(EXEEXT): $(testSchemas_OBJECTS) $(testSchemas_DEPENDENCIES) + @rm -f testSchemas$(EXEEXT) + $(testSchemas_LINK) $(testSchemas_OBJECTS) $(testSchemas_LDADD) $(LIBS) +testThreads$(EXEEXT): $(testThreads_OBJECTS) $(testThreads_DEPENDENCIES) + @rm -f testThreads$(EXEEXT) + $(testThreads_LINK) $(testThreads_OBJECTS) $(testThreads_LDADD) $(LIBS) +testURI$(EXEEXT): $(testURI_OBJECTS) $(testURI_DEPENDENCIES) + @rm -f testURI$(EXEEXT) + $(testURI_LINK) $(testURI_OBJECTS) $(testURI_LDADD) $(LIBS) +testXPath$(EXEEXT): $(testXPath_OBJECTS) $(testXPath_DEPENDENCIES) + @rm -f testXPath$(EXEEXT) + $(testXPath_LINK) $(testXPath_OBJECTS) $(testXPath_LDADD) $(LIBS) +testapi$(EXEEXT): $(testapi_OBJECTS) $(testapi_DEPENDENCIES) + @rm -f testapi$(EXEEXT) + $(testapi_LINK) $(testapi_OBJECTS) $(testapi_LDADD) $(LIBS) +testchar$(EXEEXT): $(testchar_OBJECTS) $(testchar_DEPENDENCIES) + @rm -f testchar$(EXEEXT) + $(testchar_LINK) $(testchar_OBJECTS) $(testchar_LDADD) $(LIBS) +testdict$(EXEEXT): $(testdict_OBJECTS) $(testdict_DEPENDENCIES) + @rm -f testdict$(EXEEXT) + $(testdict_LINK) $(testdict_OBJECTS) $(testdict_LDADD) $(LIBS) +testrecurse$(EXEEXT): $(testrecurse_OBJECTS) $(testrecurse_DEPENDENCIES) + @rm -f testrecurse$(EXEEXT) + $(testrecurse_LINK) $(testrecurse_OBJECTS) $(testrecurse_LDADD) $(LIBS) +xmlcatalog$(EXEEXT): $(xmlcatalog_OBJECTS) $(xmlcatalog_DEPENDENCIES) + @rm -f xmlcatalog$(EXEEXT) + $(xmlcatalog_LINK) $(xmlcatalog_OBJECTS) $(xmlcatalog_LDADD) $(LIBS) +xmllint$(EXEEXT): $(xmllint_OBJECTS) $(xmllint_DEPENDENCIES) + @rm -f xmllint$(EXEEXT) + $(xmllint_LINK) $(xmllint_OBJECTS) $(xmllint_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DOCBparser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HTMLparser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HTMLtree.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SAX.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SAX2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c14n.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/catalog.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chvalid.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debugXML.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dict.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoding.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entities.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globals.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/legacy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanoftp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanohttp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parserInternals.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relaxng.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runsuite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runxmlconf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/schematron.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testAutomata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testC14N.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testHTML.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testModule.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testReader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRegexp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testRelax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSAX.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testSchemas.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testThreads@THREADS_W32@.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testURI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testXPath.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testapi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testchar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdict.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdso.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrecurse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/triostr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xinclude.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xlink.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlIO.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlcatalog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmllint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlmemory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlmodule.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlreader.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlregexp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlsave.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlschemas.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlschemastypes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlstring.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlunicode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlwriter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpath.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpointer.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list=''; test -n "$(man1dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } +install-man3: $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list=''; test -n "$(man3dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ + done; } + +uninstall-man3: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man3dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.3[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + test -z "$$files" || { \ + echo " ( cd '$(DESTDIR)$(man3dir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(man3dir)" && rm -f $$files; } +install-confexecDATA: $(confexec_DATA) + @$(NORMAL_INSTALL) + test -z "$(confexecdir)" || $(MKDIR_P) "$(DESTDIR)$(confexecdir)" + @list='$(confexec_DATA)'; test -n "$(confexecdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(confexecdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(confexecdir)" || exit $$?; \ + done + +uninstall-confexecDATA: + @$(NORMAL_UNINSTALL) + @list='$(confexec_DATA)'; test -n "$(confexecdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(confexecdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(confexecdir)" && rm -f $$files +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)" + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(m4datadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(m4datadir)" && rm -f $$files +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @$(am__cd) '$(distuninstallcheck_dir)' \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \ + config.h +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(confexecdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-m4dataDATA install-man \ + install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-confexecDATA install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 install-man3 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-confexecDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-m4dataDATA uninstall-man \ + uninstall-pkgconfigDATA + +uninstall-man: uninstall-man1 uninstall-man3 + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \ + dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ + distclean distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-binSCRIPTS \ + install-confexecDATA install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-m4dataDATA \ + install-man install-man1 install-man3 install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-confexecDATA \ + uninstall-libLTLIBRARIES uninstall-local uninstall-m4dataDATA \ + uninstall-man uninstall-man1 uninstall-man3 \ + uninstall-pkgconfigDATA + + +# that one forces the rebuild when "make rebuild" is run on doc/ +rebuild_testapi: + -@(if [ "$(PYTHON)" != "" ] ; then \ + $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi ) + +# that one is just to make sure it is rebuilt if missing +# but adding the dependances generate mess +testapi.c: $(srcdir)/gentest.py + -@(if [ "$(PYTHON)" != "" ] ; then \ + $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi ) + +#testOOM_SOURCES=testOOM.c testOOMlib.h testOOMlib.c +#testOOM_LDFLAGS = +#testOOM_DEPENDENCIES = $(DEPS) +#testOOM_LDADD= $(LDADDS) + +runtests: + $(CHECKER) ./runtest$(EXEEXT) && $(CHECKER) ./testrecurse$(EXEEXT) &&$(CHECKER) ./testapi$(EXEEXT) && $(CHECKER) ./testchar$(EXEEXT)&& $(CHECKER) ./testdict$(EXEEXT) && $(CHECKER) ./runxmlconf$(EXEEXT) + @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ + $(MAKE) MAKEFLAGS+=--silent tests ; fi) + +check: all runtests + +check-valgrind: all + @echo '## Running the regression tests under Valgrind' + @echo '## Go get a cup of coffee it is gonna take a while ...' + $(MAKE) CHECKER='valgrind -q' check + +testall : tests SVGtests SAXtests + +tests: XMLtests XMLenttests NStests IDtests Errtests APItests @READER_TEST@ @TEST_SAX@ @TEST_PUSH@ @TEST_HTML@ @TEST_PHTML@ @TEST_VALID@ URItests @TEST_PATTERN@ @TEST_XPATH@ @TEST_XPTR@ @TEST_XINCLUDE@ @TEST_C14N@ @TEST_DEBUG@ @TEST_CATALOG@ @TEST_REGEXPS@ @TEST_SCHEMAS@ @TEST_SCHEMATRON@ @TEST_THREADS@ Timingtests @TEST_VTIME@ @PYTHON_TESTS@ @TEST_MODULES@ + @(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \ + $(MAKE) MAKEFLAGS+=--silent tests ; fi) + @(cd doc/examples ; $(MAKE) MAKEFLAGS+=--silent tests) + +valgrind: + @echo '## Running the regression tests under Valgrind' + @echo '## Go get a cup of coffee it is gonna take a while ...' + $(MAKE) CHECKER='valgrind -q' tests + +APItests: testapi$(EXEEXT) + @echo "## Running the API regression tests this may take a little while" + -@($(CHECKER) $(top_builddir)/testapi -q) + +HTMLtests : testHTML$(EXEEXT) + @(echo > .memdump) + @echo "## HTML regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML $$i > $(srcdir)/result/HTML/$$name 2>$(srcdir)/result/HTML/$$name.err ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML $$i > result.$$name 2> error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name result.$$name ; \ + diff -b $(srcdir)/result/HTML/$$name.err error.$$name ; \ + $(CHECKER) $(top_builddir)/testHTML result.$$name > result2.$$name 2>error.$$name ; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name error.$$name ; \ + fi ; fi ; done) + +HTMLPushtests : testHTML$(EXEEXT) + @echo "## Push HTML regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push $$i > $(srcdir)/result/HTML/$$name 2>$(srcdir)/result/HTML/$$name.err ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --push $$i > result.$$name 2> error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name result.$$name ; \ + cut -b 1-15 $(srcdir)/result/HTML/$$name.err > errorcut.$$name; \ + cut -b 1-15 error.$$name > errorcut2.$$name; \ + diff -b errorcut.$$name errorcut2.$$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push result.$$name > result2.$$name 2>error.$$name ; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name error.$$name errorcut.$$name errorcut2.$$name ; \ + fi ; fi ; done) + @echo "## HTML SAX regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name.sax ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --sax $$i > $(srcdir)/result/HTML/$$name.sax ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --sax $$i > result.$$name.sax ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name.sax result.$$name.sax` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name.sax ; \ + fi ; fi ; done) + @echo "## Push HTML SAX regression tests" + -@(for i in $(srcdir)/test/HTML/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/HTML/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testHTML --push --sax $$i > $(srcdir)/result/HTML/$$name.sax ; \ + else \ + log=`$(CHECKER) $(top_builddir)/testHTML --push --sax $$i 2>&1 > result.$$name.sax ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/HTML/$$name.sax result.$$name.sax` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name.sax ; \ + fi ; fi ; done) + +XMLtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ;\ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + @echo "## XML regression tests on memory" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --memory $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"`; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + diff result.$$name result2.$$name ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +XMLPushtests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML push regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --push $$i > $(srcdir)/result/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --push $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --push result.$$name 2>&1 > result2.$$name | grep -v 'failed to load external entity' ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +NStests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML Namespaces regression tests" + -@(for i in $(srcdir)/test/namespaces/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/namespaces/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i \ + 2> $(srcdir)/result/namespaces/$$name.err \ + > $(srcdir)/result/namespaces/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/namespaces/$$name result.$$name ; \ + diff $(srcdir)/result/namespaces/$$name.err error.$$name`; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +IDtests : xmllint$(EXEEXT) testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## xml:id regression tests" + -@(for i in $(srcdir)/test/xmlid/id_*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/xmlid/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -i $$i "id('bar')" \ + 2> $(srcdir)/result/xmlid/$$name.err \ + > $(srcdir)/result/xmlid/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -i $$i "id('bar')" 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/xmlid/$$name result.$$name ; \ + diff $(srcdir)/result/xmlid/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Errtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Error cases regression tests" + -@(for i in $(srcdir)/test/errors/*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/errors/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i \ + 2> $(srcdir)/result/errors/$$name.err \ + > $(srcdir)/result/errors/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint $$i 2> error.$$name > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/errors/$$name result.$$name ; \ + diff $(srcdir)/result/errors/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + @echo "## Error cases stream regression tests" + -@(for i in $(srcdir)/test/errors/*.xml ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/errors/$$name.str ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --stream $$i \ + 2> $(srcdir)/result/errors/$$name.str \ + > /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --stream $$i 2> error.$$name > /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/errors/$$name.str error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm error.$$name ; \ + fi ; fi ; done) + +Docbtests : xmllint$(EXEEXT) + +XMLenttests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XML entity subst regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/noent/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent $$i > $(srcdir)/result/noent/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noent $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff $(srcdir)/result/noent/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent result.$$name 2>&1 > result2.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result.$$name result2.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +URItests : testURI$(EXEEXT) + @(echo > .memdump) + @echo "## URI module regression tests" + -@(for i in $(srcdir)/test/URI/*.data ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/URI/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testURI -base 'http://foo.com/path/to/index.html?orig#help' < $$i > $(srcdir)/result/URI/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testURI -base 'http://foo.com/path/to/index.html?orig#help' < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/URI/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/URI/*.uri ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/URI/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testURI < $$i > $(srcdir)/result/URI/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testURI < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/URI/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +XPathtests : testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## XPath regression tests" + -@(if [ "`$(top_builddir)/testXPath | grep 'support not compiled in'`" != "" ] ; \ + then echo Skipping debug not compiled in ; exit 0 ; fi ; \ + for i in $(srcdir)/test/XPath/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XPath/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -f --expr $$i > $(srcdir)/result/XPath/expr/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -f --expr $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; \ + for i in $(srcdir)/test/XPath/docs/* ; do \ + if [ ! -d $$i ] ; then \ + doc=`basename $$i`; \ + for j in $(srcdir)/test/XPath/tests/$$doc* ; do \ + if [ ! -f $$j ] ; then continue ; fi ; \ + name=`basename $$j`; \ + if [ ! -d $$j ] ; then \ + if [ ! -f $(srcdir)/result/XPath/tests/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -f -i $$i $$j > $(srcdir)/result/XPath/tests/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -f -i $$i $$j 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/tests/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; fi ; done) + +XPtrtests : testXPath$(EXEEXT) + @(echo > .memdump) + @echo "## XPointer regression tests" + -@(if [ "`$(top_builddir)/testXPath | grep 'support not compiled in'`" != "" ] ; \ + then echo Skipping debug not compiled in ; exit 0 ; fi ; \ + for i in $(srcdir)/test/XPath/docs/* ; do \ + if [ ! -d $$i ] ; then \ + doc=`basename $$i`; \ + for j in $(srcdir)/test/XPath/xptr/$$doc* ; do \ + if [ ! -f $$j ] ; then continue ; fi ; \ + name=`basename $$j`; \ + if [ ! -d $$j ] ; then \ + if [ ! -f $(srcdir)/result/XPath/xptr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testXPath -xptr -f -i $$i $$j > $(srcdir)/result/XPath/xptr/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + else \ + log=`$(CHECKER) $(top_builddir)/testXPath -xptr -f -i $$i $$j 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XPath/xptr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ; fi ; done) + +XIncludetests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## XInclude regression tests" + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude $$i > $(srcdir)/result/XInclude/$$name 2> $(srcdir)/result/XInclude/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name result.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode $$i > $(srcdir)/result/XInclude/$$name 2> $(srcdir)/result/XInclude/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name result.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + @(echo > .memdump) + @echo "## XInclude xmlReader regression tests" + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > $(srcdir)/result/XInclude/$$name.rdr ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name.err error.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/XInclude/docs/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/XInclude/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nowarning --noxincludenode --stream --debug $$i > $(srcdir)/result/XInclude/$$name.rdr ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nowarning --xinclude --stream --debug $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/XInclude/$$name.err error.$$name ; \ + diff $(srcdir)/result/XInclude/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Scripttests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Scripts regression tests" + @echo "## Some of the base computations may be different if srcdir != ." + -@(for i in $(srcdir)/test/scripts/*.script ; do \ + name=`basename $$i .script`; \ + xml=$(srcdir)/test/scripts/`basename $$i .script`.xml; \ + if [ -f $$xml ] ; then \ + if [ ! -f $(srcdir)/result/scripts/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --shell $$xml < $$i > $(srcdir)/result/scripts/$$name 2> $(srcdir)/result/scripts/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --shell $$xml < $$i > result.$$name 2> result.$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/scripts/$$name result.$$name ; \ + diff $(srcdir)/result/scripts/$$name.err result.$$name.err` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name result.$$name.err ; \ + fi ; fi ; done) + +Catatests : xmlcatalog$(EXEEXT) + @(echo > .memdump) + @echo "## Catalog regression tests" + -@(for i in $(srcdir)/test/catalogs/*.script ; do \ + name=`basename $$i .script`; \ + xml=$(srcdir)/test/catalogs/`basename $$i .script`.xml; \ + if [ -f $$xml ] ; then \ + if [ ! -f $(srcdir)/result/catalogs/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmlcatalog --shell $$xml < $$i 2>&1 > $(srcdir)/result/catalogs/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmlcatalog --shell $$xml < $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/catalogs/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + -@(for i in $(srcdir)/test/catalogs/*.script ; do \ + name=`basename $$i .script`; \ + sgml=$(srcdir)/test/catalogs/`basename $$i .script`.sgml; \ + if [ -f $$sgml ] ; then \ + if [ ! -f $(srcdir)/result/catalogs/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmlcatalog --shell $$sgml < $$i > $(srcdir)/result/catalogs/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmlcatalog --shell $$sgml < $$i > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/catalogs/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Add and del operations on XML Catalogs" + -@($(CHECKER) $(top_builddir)/xmlcatalog --create --noout $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid sysid $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid2 sysid2 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --add public Pubid3 sysid3 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result/catalogs/mycatalog.full $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid3 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + $(CHECKER) $(top_builddir)/xmlcatalog --noout --del sysid2 $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + diff result/catalogs/mycatalog.empty $(srcdir)/result/catalogs/mycatalog; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + rm -f $(srcdir)/result/catalogs/mycatalog) + +SVGtests : xmllint$(EXEEXT) + @echo "## SVG parsing regression tests" + -@(for i in $(srcdir)/test/SVG/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/SVG/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > $(srcdir)/result/SVG/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + echo Testing $$name ; \ + $(CHECKER) $(top_builddir)/xmllint $$i > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/SVG/$$name result.$$name ; \ + $(CHECKER) $(top_builddir)/xmllint result.$$name > result2.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff result.$$name result2.$$name ; \ + rm result.$$name result2.$$name ; \ + fi ; fi ; done) + +Threadtests : testThreads$(EXEEXT) + @echo "## Threaded regression tests" + -@($(CHECKER) $(top_builddir)/testThreads ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"; \ + exit 0) + +Readertests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Reader regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nonet --debug --stream $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Reader on memory regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --memory --nonet --debug --stream $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --memory --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @(echo > .memdump) + @echo "## Walker regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rdr ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --nonet --debug --walker $$i > $(srcdir)/result/$$name.rdr 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --nonet --debug --walker $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rdr result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Reader entities substitution regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.rde ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noent --nonet --debug --stream $$i > $(srcdir)/result/$$name.rde 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noent --nonet --debug --stream $$i > result.$$name 2>/dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.rde result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +SAXtests : testSAX$(EXEEXT) + @(echo > .memdump) + @echo "## SAX1 callbacks regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.sax ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testSAX $$i > $(srcdir)/result/$$name.sax 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSAX $$i > result.$$name 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.sax result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## SAX2 callbacks regression tests" + -@(for i in $(srcdir)/test/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/$$name.sax2 ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testSAX --sax2 $$i > $(srcdir)/result/$$name.sax2 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSAX --sax2 $$i > result.$$name 2> /dev/null ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/$$name.sax2 result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +Validtests : xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Valid documents regression tests" + -@(for i in $(srcdir)/test/VCM/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + log=`$(CHECKER) $(top_builddir)/xmllint --valid --noout --nowarning $$i ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0"`;\ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + fi ; done ; exit 0) + @echo "## Validity checking regression tests" + -@(for i in $(srcdir)/test/VC/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/VC/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --noout --valid $$i 2> $(srcdir)/result/VC/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --noout --valid $$i 2> result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/VC/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## General documents valid regression tests" + -@(for i in $(srcdir)/test/valid/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/valid/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/xmllint --valid $$i > $(srcdir)/result/valid/$$name 2>$(srcdir)/result/valid/$$name.err ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint --valid $$i > result.$$name 2>error.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/valid/$$name result.$$name ; \ + diff $(srcdir)/result/valid/$$name.err error.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name error.$$name ; \ + fi ; fi ; done) + +Regexptests: testRegexp$(EXEEXT) + @(echo > .memdump) + @echo "## Regexp regression tests" + -@(for i in $(srcdir)/test/regexp/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/regexp/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp -i $$i > $(srcdir)/result/regexp/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/regexp/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + @echo "## Formal expresssions regression tests" + -@(for i in $(srcdir)/test/expr/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/expr/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testRegexp --expr -i $$i > $(srcdir)/result/expr/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testRegexp --expr -i $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/expr/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +Automatatests: testAutomata$(EXEEXT) + @(echo > .memdump) + @echo "## Automata regression tests" + -@(for i in $(srcdir)/test/automata/* ; do \ + name=`basename $$i`; \ + if [ ! -d $$i ] ; then \ + if [ ! -f $(srcdir)/result/automata/$$name ] ; then \ + echo New test file $$name ; \ + $(CHECKER) $(top_builddir)/testAutomata $$i > $(srcdir)/result/automata/$$name; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testAutomata $$i 2>&1 > result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/automata/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done) + +dba100000.xml: dbgenattr.pl + @echo "## generating dba100000.xml" + @($(PERL) $(top_srcdir)/dbgenattr.pl 100000 > dba100000.xml) + +Timingtests: xmllint$(EXEEXT) dba100000.xml + @echo "## Timing tests to try to detect performance" + @echo "## as well a memory usage breakage when streaming" + @echo "## 1/ using the file interface" + @echo "## 2/ using the memory interface" + @echo "## 3/ repeated DOM parsing" + @echo "## 4/ repeated DOM validation" + -@($(top_builddir)/xmllint --stream --timing dba100000.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + -@($(top_builddir)/xmllint --stream --timing --memory dba100000.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + -@($(top_builddir)/xmllint --noout --timing --repeat $(srcdir)/test/valid/REC-xml-19980210.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + +VTimingtests: xmllint$(EXEEXT) + -@($(top_builddir)/xmllint --noout --timing --valid --repeat $(srcdir)/test/valid/REC-xml-19980210.xml; \ + MEM=`cat .memdump | grep "MEMORY ALLOCATED" | awk '{ print $$7}'`;\ + if [ "$$MEM" != "" ] ; then echo Using $$MEM bytes ; fi ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + exit 0) + +C14Ntests : testC14N$(EXEEXT) + @echo "## C14N and XPath regression tests" + -@(for m in with-comments without-comments 1-1-without-comments exc-without-comments ; do \ + for i in $(srcdir)/test/c14n/$$m/*.xml ; do \ + if [ ! -d $$i ] ; then \ + name=`basename $$i .xml`; \ + cmdline="$(CHECKER) $(top_builddir)/testC14N --$$m $$i"; \ + if [ -f $(srcdir)/test/c14n/$$m/$$name.xpath ] ; then \ + cmdline="$$cmdline $(srcdir)/test/c14n/$$m/$$name.xpath"; \ + if [ -f $(srcdir)/test/c14n/$$m/$$name.ns ] ; then \ + cmdline="$$cmdline '`cat $(srcdir)/test/c14n/$$m/$$name.ns`'"; \ + fi; \ + fi; \ + $$cmdline > $(srcdir)/test/c14n/test.tmp; \ + if [ $$? -eq 0 ]; then \ + diff $(srcdir)/result/c14n/$$m/$$name $(srcdir)/test/c14n/test.tmp; \ + if [ $$? -ne 0 ]; then \ + echo "Test $$m/$$name failed"; \ + cat $(srcdir)/test/c14n/test.tmp; \ + fi; \ + else \ + echo "C14N failed"; \ + fi; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + fi; \ + rm -f $(srcdir)/test/c14n/test.tmp; \ + done; \ + done) + +Schemastests: testSchemas$(EXEEXT) + @(echo > .memdump) + @echo "## Schemas regression tests" + -@(for i in $(srcdir)/test/schemas/*_*.xsd ; do \ + name=`basename $$i | sed 's+_.*++'`; \ + sno=`basename $$i | sed 's+.*_\(.*\).xsd+\1+'`; \ + for j in $(srcdir)/test/schemas/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$sno"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/testSchemas $$i $$j \ + > $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" \ + 2> $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/testSchemas $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schemas/"$$name"_"$$sno"_"$$xno".err \ + err.$$name;\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$sno"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ;\ + done; done) + +Relaxtests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Relax-NG regression tests" + -@(for i in $(srcdir)/test/relaxng/*.rng ; do \ + name=`basename $$i | sed 's+\.rng++'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_valid ] ; then \ + echo New schemas $$name ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $(srcdir)/test/relaxng/tutorA.rng $$i \ + > $(srcdir)/result/relaxng/"$$name"_valid \ + 2> $(srcdir)/result/relaxng/"$$name"_err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $(srcdir)/test/relaxng/tutorA.rng $$i \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_valid \ + res.$$name;\ + diff $(srcdir)/result/relaxng/"$$name"_err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo schemas $$name result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi; \ + for j in $(srcdir)/test/relaxng/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + 2> $(srcdir)/result/relaxng/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + @echo "## Relax-NG streaming regression tests" + -@(for i in $(srcdir)/test/relaxng/*.rng ; do \ + name=`basename $$i | sed 's+\.rng++'`; \ + for j in $(srcdir)/test/relaxng/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/relaxng/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --relaxng $$i $$j \ + > $(srcdir)/result/relaxng/"$$name"_"$$xno" \ + 2> $(srcdir)/result/relaxng/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --noout --stream --relaxng $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno" res.$$name;\ + if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" -a "$$name" != "tutor8_2" ] ; then \ + diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + fi ; grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + +Schematrontests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Schematron regression tests" + -@(for i in $(srcdir)/test/schematron/*.sct ; do \ + name=`basename $$i | sed 's+\.sct++'`; \ + for j in $(srcdir)/test/schematron/"$$name"_*.xml ; do \ + if [ -f $$j ] ; then \ + xno=`basename $$j | sed 's+.*_\(.*\).xml+\1+'`; \ + if [ ! -f $(srcdir)/result/schematron/"$$name"_"$$xno" ]; \ + then \ + echo New test file "$$name"_"$$xno" ; \ + $(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > $(srcdir)/result/schematron/"$$name"_"$$xno" \ + 2> $(srcdir)/result/schematron/"$$name"_"$$xno".err; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + else \ + log=`$(CHECKER) $(top_builddir)/xmllint$(EXEEXT) --schematron $$i $$j \ + > res.$$name 2> err.$$name;\ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno" \ + res.$$name;\ + diff $(srcdir)/result/schematron/"$$name"_"$$xno".err \ + err.$$name | grep -v "error detected at";\ + grep Unimplemented err.$$name`; \ + if [ -n "$$log" ] ; then echo "$$name"_"$$xno" result ; echo $$log ; fi ; \ + rm res.$$name err.$$name ; \ + fi ; fi ; \ + done; done) + +RelaxNGPythonTests: + @(if [ -x $(PYTHON) ] ; then \ + PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH ; \ + export PYTHONPATH; \ + LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \ + export LD_LIBRARY_PATH; \ + echo "## Relax-NG Python based test suite 1" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-relaxng-test-suite.py ; \ + echo "## Relax-NG Python based test suite 2" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-relaxng-test-suite2.py ; \ + fi) + +SchemasPythonTests: + @(if [ -x $(PYTHON) ] ; then \ + PYTHONPATH=$(top_builddir)/python:$(top_builddir)/python/.libs:$$PYTHONPATH; \ + export PYTHONPATH; \ + LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \ + export LD_LIBRARY_PATH; \ + echo "## XML Schemas datatypes Python based test suite" ; \ + echo "## It is normal to see 11 errors reported" ; \ + $(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \ + fi) + @(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi) + +Patterntests: xmllint$(EXEEXT) + @(echo > .memdump) + @echo "## Pattern regression tests" + -@(for i in $(srcdir)/test/pattern/*.pat ; do \ + name=`basename $$i .pat`; \ + if [ -f $(srcdir)/test/pattern/$$name.xml ] ; then \ + if [ ! -f $(srcdir)/result/pattern/$$name ] ; then \ + rm -f result.$$name ; \ + echo New test file $$name ; \ + for pat in `cat $$i` ; do \ + $(CHECKER) $(top_builddir)/xmllint --walker --pattern $$pat $(srcdir)/test/pattern/$$name.xml >> $(srcdir)/result/pattern/$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + done ;\ + else \ + rm -f result.$$name ; \ + lst=`cat $$i` ; \ + log=`for pat in $$lst ; do $(CHECKER) $(top_builddir)/xmllint --walker --pattern $$pat $(srcdir)/test/pattern/$$name.xml 2>&1 >> result.$$name ; \ + grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0";\ + done ;\ + diff $(srcdir)/result/pattern/$$name result.$$name` ; \ + if [ -n "$$log" ] ; then echo $$name result ; echo $$log ; fi ; \ + rm result.$$name ; \ + fi ; fi ; done ;) + +ModuleTests: testModule$(EXEEXT) testdso.la + @echo "## Module tests" + @(./testModule$(EXEEXT)) + +cleanup: + -@(find . -name .\#\* -exec rm {} \;) + -@(find . -name \*.gcda -o *.gcno -exec rm {} \;) + -@(find . -name \*.orig -o -name \*.rej -o -name \*.old -exec rm {} \;) + +dist-hook: cleanup libxml2.spec + -cp libxml2.spec $(distdir) + (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn win32 macos vms VxWorks bakefile test result) | (cd $(distdir); tar xf -) + +dist-source: distdir + $(AMTAR) -chof - --exclude Tests --exclude test --exclude result $(distdir) | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-sources+"`.tar.gz + +dist-test: distdir + (mkdir -p $(distdir)) + (cd $(srcdir) ; tar -cf - --exclude CVS --exclude .svn xstc/Tests) | (cd $(distdir); tar xf -) + tar -cf - $(distdir)/test $(distdir)/result $(distdir)/xstc/Tests $(distdir)/Makefile.tests $(distdir)/README $(distdir)/README.tests $(distdir)/AUTHORS $(distdir)/testapi.c $(distdir)/runtest.c $(distdir)/runsuite.c | GZIP=$(GZIP_ENV) gzip -c >`echo "$(distdir)" | sed "s+libxml2+libxml2-tests+"`.tar.gz + @(rm -rf $(distdir)/xstc/Test) + +cleantar: + @(rm -f libxml*.tar.gz COPYING.LIB) + +rpm: cleanup cleantar + @(unset CDPATH ; $(MAKE) dist-source dist && rpmbuild -ta $(distdir).tar.gz) + +xml2Conf.sh: xml2Conf.sh.in Makefile + sed -e 's?\@XML_LIBDIR\@?$(XML_LIBDIR)?g' \ + -e 's?\@XML_INCLUDEDIR\@?$(XML_INCLUDEDIR)?g' \ + -e 's?\@VERSION\@?$(VERSION)?g' \ + -e 's?\@XML_LIBS\@?$(XML_LIBS)?g' \ + < $(srcdir)/xml2Conf.sh.in > xml2Conf.tmp \ + && mv xml2Conf.tmp xml2Conf.sh + +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + -@INSTALL@ -m 0644 $(srcdir)/Copyright $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + $(mkinstalldirs) $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/xmllint.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testSAX.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testHTML.c $(DESTDIR)$(EXAMPLES_DIR) + -@INSTALL@ -m 0644 $(srcdir)/testXPath.c $(DESTDIR)$(EXAMPLES_DIR) + +uninstall-local: + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testXPath.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testHTML.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/testSAX.c + rm -f $(DESTDIR)$(EXAMPLES_DIR)/xmllint.c + rm -rf $(DESTDIR)$(EXAMPLES_DIR) + rm -f $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE)/Copyright + rm -rf $(DESTDIR)$(BASE_DIR)/$(DOC_MODULE) + +tst: tst.c + $(CC) $(CFLAGS) -Iinclude -o tst tst.c .libs/libxml2.a -lpthread -lm -lz + +sparse: clean + $(MAKE) CC=cgcc + +cov: clean-cov + if [ "`echo $(LDFLAGS) | grep coverage`" = "" ] ; then \ + echo not configured with coverage; exit 1 ; fi + if [ ! -x $(LCOV) -o ! -x $(GENHTML) ] ; then \ + echo Need $(LCOV) and $(GENHTML) excecutables; exit 1 ; fi + -@($(MAKE) check) + -@(./runsuite$(EXEEXT)) + mkdir $(top_builddir)/coverage + $(LCOV) -c -o $(top_builddir)/coverage/libxml2.info.tmp -d $(top_srcdir) + $(LCOV) -r $(top_builddir)/coverage/libxml2.info.tmp -o $(top_builddir)/coverage/libxml2.info *usr* + rm $(top_builddir)/coverage/libxml2.info.tmp + $(GENHTML) -s -t "libxml2" -o $(top_builddir)/coverage --legend $(top_builddir)/coverage/libxml2.info + echo "Coverage report is in $(top_builddir)/coverage/index.html" + +clean-cov: + rm -rf $(top_builddir)/coverage + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT:
diff --git a/libxml2-2.7.7/Makefile.tests b/libxml2-2.7.7/Makefile.tests new file mode 100644 index 0000000..619cbfb --- /dev/null +++ b/libxml2-2.7.7/Makefile.tests
@@ -0,0 +1,41 @@ +# +# You may have to ajust to call the right compiler, or other oprions +# for compiling and linking +# + +CFLAGS=`xml2-config --cflags` +LIBS=`xml2-config --libs` +THREADLIB= -lpthread +EXEEXT= + +all: runtest$(EXEEXT) runsuite$(EXEEXT) testapi$(EXEEXT) testchar$(EXEEXT) + +clean: + $(RM) runtest$(EXEEXT) runsuite$(EXEEXT) testapi$(EXEEXT) + +check: do_runtest do_testchar do_testapi do_runsuite + +runtest$(EXEEXT): runtest.c + $(CC) -o runtest$(EXEEXT) $(CFLAGS) runtest.c $(LIBS) $(THREADLIB) + +do_runtest: runtest$(EXEEXT) + ./runtest + +runsuite$(EXEEXT): runsuite.c + $(CC) -o runsuite$(EXEEXT) $(CFLAGS) runsuite.c $(LIBS) + +do_runsuite: runsuite$(EXEEXT) + ./runsuite + +testapi$(EXEEXT): testapi.c + $(CC) -o testapi$(EXEEXT) $(CFLAGS) testapi.c $(LIBS) + +do_testapi: testapi$(EXEEXT) + ./testapi + +testchar$(EXEEXT): testchar.c + $(CC) -o testchar$(EXEEXT) $(CFLAGS) testchar.c $(LIBS) + +do_testchar: testchar$(EXEEXT) + ./testchar +
diff --git a/libxml2-2.7.7/NEWS b/libxml2-2.7.7/NEWS new file mode 100644 index 0000000..cdfdda6 --- /dev/null +++ b/libxml2-2.7.7/NEWS
@@ -0,0 +1,2006 @@ + + NEWS file for libxml2 + + Note that this is automatically generated from the news webpage at: + http://xmlsoft.org/news.html + +Items not finished and worked on, get in touch with the list if you want +to help those - More testing on RelaxNG + - Finishing up XML + Schemas + +The change log at +ChangeLog.html + describes the recents commits +to the SVN at +http://svn.gnome.org/viewvc/libxml2/trunk/ + code base.Here is the list of public releases: +2.7.6: Oct 6 2009: + - Bug Fixes: + Restore thread support in default configuration (Andrew W. Nosenko), + URI with no path parsing problem (Daniel Veillard), + Minor patch for conditional defines in threads.c (Eric Zurcher) + + + +2.7.5: Sep 24 2009: + - Bug Fixes: + Restore behavior of --with-threads without argument (Andrew W. Nosenko), + Fix memory leak when doc is NULL (Rob Richards), + 595792 fixing a RelaxNG bug introduced in 2.7.4 (Daniel Veillard), + Fix a Relaxng bug raised by libvirt test suite (Daniel Veillard), + Fix a parsing problem with little data at startup (Daniel Veillard), + link python module with python library (Frederic Crozat), + 594874 Forgot an fclose in xmllint (Daniel Veillard) + + - Cleanup: + Adding symbols.xml to EXTRA_DIST (Daniel Veillard) + + + +2.7.4: Sep 10 2009: + - Improvements: + Switch to GIT (GNOME), + Add symbol versioning to libxml2 shared libs (Daniel Veillard) + + - Portability: + 593857 try to work around thread pbm MinGW 4.4 (Daniel Veillard), + 594250 rename ATTRIBUTE_ALLOC_SIZE to avoid clashes (Daniel Veillard), + Fix Windows build * relaxng.c: fix windows build (Rob Richards), + Fix the globals.h to use XMLPUBFUN (Paul Smith), + Problem with extern extern in header (Daniel Veillard), + Add -lnetwork for compiling on Haiku (Scott McCreary), + Runtest portability patch for Solaris (Tim Rice), + Small patch to accomodate the Haiku OS (Scott McCreary), + 584605 package VxWorks folder in the distribution (Daniel Veillard), + 574017 Realloc too expensive on most platform (Daniel Veillard), + Fix windows build (Rob Richards), + 545579 doesn't compile without schema support (Daniel Veillard), + xmllint use xmlGetNodePath when not compiled in (Daniel Veillard), + Try to avoid __imp__xmlFree link trouble on msys (Daniel Veillard), + Allow to select the threading system on Windows (LRN), + Fix Solaris binary links, cleanups (Daniel Veillard), + Bug 571059 – MSVC doesn't work with the bakefile (Intron), + fix ATTRIBUTE_PRINTF header clash (Belgabor and Mike Hommey), + fixes for Borland/CodeGear/Embarcadero compilers (Eric Zurcher) + + - Documentation: + 544910 typo: "renciliateNs" (Leonid Evdokimov), + Add VxWorks to list of OSes (Daniel Veillard), + Regenerate the documentation and update for git (Daniel Veillard), + 560524 ¿ xmlTextReaderLocalName description (Daniel Veillard), + Added sponsoring by AOE media for the server (Daniel Veillard), + updated URLs for GNOME (Vincent Lefevre), + more warnings about xmlCleanupThreads and xmlCleanupParser (Daniel Veillard) + + - Bug fixes: + 594514 memory leaks - duplicate initialization (MOD), + Wrong block opening in htmlNodeDumpOutputInternal (Daniel Veillard), + 492317 Fix Relax-NG validation problems (Daniel Veillard), + 558452 fight with reg test and error report (Daniel Veillard), + 558452 RNG compilation of optional multiple child (Daniel Veillard), + 579746 XSD validation not correct / nilable groups (Daniel Veillard), + 502960 provide namespace stack when parsing entity (Daniel Veillard), + 566012 part 2 fix regresion tests and push mode (Daniel Veillard), + 566012 autodetected encoding and encoding conflict (Daniel Veillard), + 584220 xpointer(/) and xinclude problems (Daniel Veillard), + 587663 Incorrect Attribute-Value Normalization (Daniel Veillard), + 444994 HTML chunked failure for attribute with <> (Daniel Veillard), + Fix end of buffer char being split in XML parser (Daniel Veillard), + Non ASCII character may be split at buffer end (Adiel Mittmann), + 440226 Add xmlXIncludeProcessTreeFlagsData API (Stefan Behnel), + 572129 speed up parsing of large HTML text nodes (Markus Kull), + Fix HTML parsing with 0 character in CDATA (Daniel Veillard), + Fix SetGenericErrorFunc and SetStructured clash (Wang Lam), + 566012 Incomplete EBCDIC parsing support (Martin Kogler), + 541335 HTML avoid creating 2 head or 2 body element (Daniel Veillard), + 541237 error correcting missing end tags in HTML (Daniel Veillard), + 583439 missing line numbers in push mode (Daniel Veillard), + 587867 xmllint --html --xmlout serializing as HTML (Daniel Veillard), + 559501 avoid select and use poll for nanohttp (Raphael Prevost), + 559410 - Regexp bug on (...)? constructs (Daniel Veillard), + Fix a small problem on previous HTML parser patch (Daniel Veillard), + 592430 - HTML parser runs into endless loop (Daniel Veillard), + 447899 potential double free in xmlFreeTextReader (Daniel Veillard), + 446613 small validation bug mixed content with NS (Daniel Veillard), + Fix the problem of revalidating a doc with RNG (Daniel Veillard), + Fix xmlKeepBlanksDefault to not break indent (Nick Wellnhofer), + 512131 refs from externalRef part need to be added (Daniel Veillard), + 512131 crash in xmlRelaxNGValidateFullElement (Daniel Veillard), + 588441 allow '.' in HTML Names even if invalid (Daniel Veillard), + 582913 Fix htmlSetMetaEncoding() to be nicer (Daniel Veillard), + 579317 Try to find the HTML encoding information (Daniel Veillard), + 575875 don't output charset=html (Daniel Veillard), + 571271 fix semantic of xsd:all with minOccurs=0 (Daniel Veillard), + 570702 fix a bug in regexp determinism checking (Daniel Veillard), + 567619 xmlValidateNotationUse missing param test (Daniel Veillard), + 574393 ¿ utf-8 filename magic for compressed files (Hans Breuer), + Fix a couple of problems in the parser (Daniel Veillard), + 585505 ¿ Document ids and refs populated by XSD (Wayne Jensen), + 582906 XSD validating multiple imports of the same schema (Jason Childs), + Bug 582887 ¿ problems validating complex schemas (Jason Childs), + Bug 579729 ¿ fix XSD schemas parsing crash (Miroslav Bajtos), + 576368 ¿ htmlChunkParser with special attributes (Jiri Netolicky), + Bug 565747 ¿ relax anyURI data character checking (Vincent Lefevre), + Preserve attributes of include start on tree copy (Petr Pajas), + Skip silently unrecognized XPointer schemes (Jakub Wilk), + Fix leak on SAX1, xmllint --sax1 option and debug (Daniel Veillard), + potential NULL dereference on non-glibc (Jim Meyering), + Fix an XSD validation crash (Daniel Veillard), + Fix a regression in streaming entities support (Daniel Veillard), + Fix a couple of ABI issues with C14N 1.1 (Aleksey Sanin), + Aleksey Sanin support for c14n 1.1 (Aleksey Sanin), + reader bug fix with entities (Daniel Veillard), + use options from current parser ctxt for external entities (Rob Richards), + 581612 use %s to printf strings (Christian Persch), + 584605 change the threading initialization sequence (Igor Novoseltsev), + 580705 keep line numbers in HTML parser (Aaron Patterson), + 581803 broken HTML table attributes init (Roland Steiner), + do not set error code in xmlNsWarn (Rob Richards), + 564217 fix structured error handling problems, + reuse options from current parser for entities (Rob Richards), + xmlXPathRegisterNs should not allow enpty prefixes (Daniel Veillard), + add a missing check in xmlAddSibling (Kris Breuker), + avoid leaks on errors (Jinmei Tatuya) + + - Cleanup: + Chasing dead assignments reported by clang-scan (Daniel Veillard), + A few more safety cleanup raised by scan (Daniel Veillard), + Fixing assorted potential problems raised by scan (Daniel Veillard), + Potential uninitialized arguments raised by scan (Daniel Veillard), + Fix a bunch of scan 'dead increments' and cleanup (Daniel Veillard), + Remove a pedantic warning (Daniel Veillard), + 555833 always use rm -f in uninstall-local (Daniel Veillard), + 542394 xmlRegisterOutputCallbacks MAX_INPUT_CALLBACK (Daniel Veillard), + Autoregenerate libxml2.syms automated checkings (Daniel Veillard), + Make xmlRecoverDoc const (Martin Trappel) (Daniel Veillard), + Both args of xmlStrcasestr are const (Daniel Veillard), + hide the nbParse* variables used for debugging (Mike Hommey), + 570806 changed include of config.h (William M. Brack), + cleanups and error reports when xmlTextWriterVSprintf fails (Jinmei Tatuya) + + + +2.7.3: Jan 18 2009: + - Build fix: fix build when HTML support is not included. + - Bug fixes: avoid memory overflow in gigantic text nodes, + indentation problem on the writed (Rob Richards), + xmlAddChildList pointer problem (Rob Richards and Kevin Milburn), + xmlAddChild problem with attribute (Rob Richards and Kris Breuker), + avoid a memory leak in an edge case (Daniel Zimmermann), + deallocate some pthread data (Alex Ott). + - Improvements: configure option to avoid rebuilding docs (Adrian Bunk), + limit text nodes to 10MB max by default, add element traversal + APIs, add a parser option to enable pre 2.7 SAX behavior (Rob Richards), + add gcc malloc checking (Marcus Meissner), add gcc printf like functions + parameters checking (Marcus Meissner). + + +2.7.2: Oct 3 2008: + - Portability fix: fix solaris compilation problem, fix compilation + if XPath is not configured in + - Bug fixes: nasty entity bug introduced in 2.7.0, restore old behaviour + when saving an HTML doc with an xml dump function, HTML UTF-8 parsing + bug, fix reader custom error handlers (Riccardo Scussat) + + - Improvement: xmlSave options for more flexibility to save as + XML/HTML/XHTML, handle leading BOM in HTML documents + + +2.7.1: Sep 1 2008: + - Portability fix: Borland C fix (Moritz Both) + - Bug fixes: python serialization wrappers, XPath QName corner + case handking and leaks (Martin) + - Improvement: extend the xmlSave to handle HTML documents and trees + - Cleanup: python serialization wrappers + + +2.7.0: Aug 30 2008: + - Documentation: switch ChangeLog to UTF-8, improve mutithreads and + xmlParserCleanup docs + - Portability fixes: Older Win32 platforms (Rob Richards), MSVC + porting fix (Rob Richards), Mac OS X regression tests (Sven Herzberg), + non GNUCC builds (Rob Richards), compilation on Haiku (Andreas Färber) + + - Bug fixes: various realloc problems (Ashwin), potential double-free + (Ashwin), regexp crash, icrash with invalid whitespace facets (Rob + Richards), pattern fix when streaming (William Brack), various XML + parsing and validation fixes based on the W3C regression tests, reader + tree skipping function fix (Ashwin), Schemas regexps escaping fix + (Volker Grabsch), handling of entity push errors (Ashwin), fix a slowdown + when encoder cant serialize characters on output + - Code cleanup: compilation fix without the reader, without the output + (Robert Schwebel), python whitespace (Martin), many space/tabs cleanups, + serious cleanup of the entity handling code + - Improvement: switch parser to XML-1.0 5th edition, add parsing flags + for old versions, switch URI parsing to RFC 3986, + add xmlSchemaValidCtxtGetParserCtxt (Holger Kaelberer), + new hashing functions for dictionnaries (based on Stefan Behnel work), + improve handling of misplaced html/head/body in HTML parser, better + regression test tools and code coverage display, better algorithms + to detect various versions of the billion laughts attacks, make + arbitrary parser limits avoidable as a parser option + + +2.6.32: Apr 8 2008: + - Documentation: returning heap memory to kernel (Wolfram Sang), + trying to clarify xmlCleanupParser() use, xmlXPathContext improvement + (Jack Jansen), improve the *Recover* functions documentation, + XmlNodeType doc link fix (Martijn Arts) + - Bug fixes: internal subset memory leak (Ashwin), avoid problem with + paths starting with // (Petr Sumbera), streaming XSD validation callback + patches (Ashwin), fix redirection on port other than 80 (William Brack), + SAX2 leak (Ashwin), XInclude fragment of own document (Chris Ryan), + regexp bug with '.' (Andrew Tosh), flush the writer at the end of the + document (Alfred Mickautsch), output I/O bug fix (William Brack), + writer CDATA output after a text node (Alex Khesin), UTF-16 encoding + detection (William Brack), fix handling of empty CDATA nodes for Safari + team, python binding problem with namespace nodes, improve HTML parsing + (Arnold Hendriks), regexp automata build bug, memory leak fix (Vasily + Chekalkin), XSD test crash, weird system parameter entity parsing problem, + allow save to file:///X:/ windows paths, various attribute normalisation + problems, externalSubsetSplit fix (Ashwin), attribute redefinition in + the DTD (Ashwin), fix in char ref parsing check (Alex Khesin), many + out of memory handling fixes (Ashwin), XPath out of memory handling fixes + (Alvaro Herrera), various realloc problems (Ashwin), UCS4 encoding + conversion buffer size (Christian Fruth), problems with EatName + functions on memory errors, BOM handling in external parsed entities + (Mark Rowe) + - Code cleanup: fix build under VS 2008 (David Wimsey), remove useless + mutex in xmlDict (Florent Guilian), Mingw32 compilation fix (Carlo + Bramini), Win and MacOS EOL cleanups (Florent Guiliani), iconv need + a const detection (Roumen Petrov), simplify xmlSetProp (Julien Charbon), + cross compilation fixes for Mingw (Roumen Petrov), SCO Openserver build + fix (Florent Guiliani), iconv uses const on Win32 (Rob Richards), + duplicate code removal (Ashwin), missing malloc test and error reports + (Ashwin), VMS makefile fix (Tycho Hilhorst) + - improvements: better plug of schematron in the normal error handling + (Tobias Minich) + + +2.6.31: Jan 11 2008: + - Security fix: missing of checks in UTF-8 parsing + - Bug fixes: regexp bug, dump attribute from XHTML document, fix + xmlFree(NULL) to not crash in debug mode, Schematron parsing crash + (Rob Richards), global lock free on Windows (Marc-Antoine Ruel), + XSD crash due to double free (Rob Richards), indentation fix in + xmlTextWriterFullEndElement (Felipe Pena), error in attribute type + parsing if attribute redeclared, avoid crash in hash list scanner if + deleting elements, column counter bug fix (Christian Schmidt), + HTML embed element saving fix (Stefan Behnel), avoid -L/usr/lib + output from xml2-config (Fred Crozat), avoid an xmllint crash + (Stefan Kost), don't stop HTML parsing on out of range chars. + + - Code cleanup: fix open() call third argument, regexp cut'n paste + copy error, unused variable in __xmlGlobalInitMutexLock (Hannes Eder), + some make distcheck realted fixes (John Carr) + - Improvements: HTTP Header: includes port number (William Brack), + testURI --debug option, + + +2.6.30: Aug 23 2007: + - Portability: Solaris crash on error handling, windows path fixes + (Roland Schwarz and Rob Richards), mingw build (Roland Schwarz) + - Bugfixes: xmlXPathNodeSetSort problem (William Brack), leak when + reusing a writer for a new document (Dodji Seketeli), Schemas + xsi:nil handling patch (Frank Gross), relative URI build problem + (Patrik Fimml), crash in xmlDocFormatDump, invalid char in comment + detection bug, fix disparity with xmlSAXUserParseMemory, automata + generation for complex regexp counts problems, Schemas IDC import + problems (Frank Gross), xpath predicate evailation error handling + (William Brack) + + +2.6.29: Jun 12 2007: + - Portability: patches from Andreas Stricke for WinCEi, + fix compilation warnings (William Brack), avoid warnings on Apple OS/X + (Wendy Doyle and Mark Rowe), Windows compilation and threading + improvements (Rob Richards), compilation against old Python versions, + new GNU tar changes (Ryan Hill) + - Documentation: xmlURIUnescapeString comment, + - Bugfixes: xmlBufferAdd problem (Richard Jones), 'make valgrind' + flag fix (Richard Jones), regexp interpretation of \, + htmlCreateDocParserCtxt (Jean-Daniel Dupas), configure.in + typo (Bjorn Reese), entity content failure, xmlListAppend() fix + (Georges-André Silber), XPath number serialization (William Brack), + nanohttp gzipped stream fix (William Brack and Alex Cornejo), + xmlCharEncFirstLine typo (Mark Rowe), uri bug (François Delyon), + XPath string value of PI nodes (William Brack), XPath node set + sorting bugs (William Brack), avoid outputting namespace decl + dups in the writer (Rob Richards), xmlCtxtReset bug, UTF-8 encoding + error handling, recustion on next in catalogs, fix a Relax-NG crash, + workaround wrong file: URIs, htmlNodeDumpFormatOutput on attributes, + invalid character in attribute detection bug, big comments before + internal subset streaming bug, HTML parsing of attributes with : in + the name, IDness of name in HTML (Dagfinn I. MannsÃ¥ker) + - Improvement: keep URI query parts in raw form (Richard Jones), + embed tag support in HTML (Michael Day) + + +2.6.28: Apr 17 2007: + - Documentation: comment fixes (Markus Keim), xpath comments fixes too + (James Dennett) + - Bug fixes: XPath bug (William Brack), HTML parser autoclose stack usage + (Usamah Malik), various regexp bug fixes (DV and William), path conversion + on Windows (Igor Zlatkovic), htmlCtxtReset fix (Michael Day), XPath + principal node of axis bug, HTML serialization of some codepoint + (Steven Rainwater), user data propagation in XInclude (Michael Day), + standalone and XML decl detection (Michael Day), Python id ouptut + for some id, fix the big python string memory leak, URI parsing fixes + (Stéphane Bidoul and William), long comments parsing bug (William), + concurrent threads initialization (Ted Phelps), invalid char + in text XInclude (William), XPath memory leak (William), tab in + python problems (Andreas Hanke), XPath node comparison error + (Oleg Paraschenko), cleanup patch for reader (Julien Reichel), + XML Schemas attribute group (William), HTML parsing problem (William), + fix char 0x2d in regexps (William), regexp quantifier range with + min occurs of 0 (William), HTML script/style parsing (Mike Day) + - Improvement: make xmlTextReaderSetup() public + - Compilation and postability: fix a missing include problem (William), + __ss_familly on AIX again (Björn Wiberg), compilation without zlib + (Michael Day), catalog patch for Win32 (Christian Ehrlicher), + Windows CE fixes (Andreas Stricke) + - Various CVS to SVN infrastructure changes + + +2.6.27: Oct 25 2006: + - Portability fixes: file names on windows (Roland Schwingel, + Emelyanov Alexey), windows compile fixup (Rob Richards), + AIX iconv() is apparently case sensitive + - improvements: Python XPath types mapping (Nic Ferrier), XPath optimization + (Kasimier), add xmlXPathCompiledEvalToBoolean (Kasimier), Python node + equality and comparison (Andreas Pakulat), xmlXPathCollectAndTest + improvememt (Kasimier), expose if library was compiled with zlib + support (Andrew Nosenko), cache for xmlSchemaIDCMatcher structs + (Kasimier), xmlTextConcat should work with comments and PIs (Rob + Richards), export htmlNewParserCtxt needed by Michael Day, refactoring + of catalog entity loaders (Michael Day), add XPointer support to + python bindings (Ross Reedstrom, Brian West and Stefan Anca), + try to sort out most file path to URI conversions and xmlPathToUri, + add --html --memory case to xmllint + - building fix: fix --with-minimum (Felipe Contreras), VMS fix, + const'ification of HTML parser structures (Matthias Clasen), + portability fix (Emelyanov Alexey), wget autodetection (Peter + Breitenlohner), remove the build path recorded in the python + shared module, separate library flags for shared and static builds + (Mikhail Zabaluev), fix --with-minimum --with-sax1 builds, fix + --with-minimum --with-schemas builds + - bug fix: xmlGetNodePath fix (Kasimier), xmlDOMWrapAdoptNode and + attribute (Kasimier), crash when using the recover mode, + xmlXPathEvalExpr problem (Kasimier), xmlXPathCompExprAdd bug (Kasimier), + missing destry in xmlFreeRMutex (Andrew Nosenko), XML Schemas fixes + (Kasimier), warning on entities processing, XHTML script and style + serialization (Kasimier), python generator for long types, bug in + xmlSchemaClearValidCtxt (Bertrand Fritsch), xmlSchemaXPathEvaluate + allocation bug (Marton Illes), error message end of line (Rob Richards), + fix attribute serialization in writer (Rob Richards), PHP4 DTD validation + crasher, parser safety patch (Ben Darnell), _private context propagation + when parsing entities (with Michael Day), fix entities behaviour when + using SAX, URI to file path fix (Mikhail Zabaluev), disapearing validity + context, arg error in SAX callback (Mike Hommey), fix mixed-content + autodetect when using --noblanks, fix xmlIOParseDTD error handling, + fix bug in xmlSplitQName on special Names, fix Relax-NG element content + validation bug, fix xmlReconciliateNs bug, fix potential attribute + XML parsing bug, fix line/column accounting in XML parser, chunking bug + in the HTML parser on script, try to detect obviously buggy HTML + meta encoding indications, bugs with encoding BOM and xmlSaveDoc, + HTML entities in attributes parsing, HTML minimized attribute values, + htmlReadDoc and htmlReadIO were broken, error handling bug in + xmlXPathEvalExpression (Olaf Walkowiak), fix a problem in + htmlCtxtUseOptions, xmlNewInputFromFile could leak (Marius Konitzer), + bug on misformed SSD regexps (Christopher Boumenot) + + - documentation: warning about XML_PARSE_COMPACT (Kasimier Buchcik), + fix xmlXPathCastToString documentation, improve man pages for + xmllitn and xmlcatalog (Daniel Leidert), fixed comments of a few + functions + + +2.6.26: Jun 6 2006: + - portability fixes: Python detection (Joseph Sacco), compilation + error(William Brack and Graham Bennett), LynxOS patch (Olli Savia) + - bug fixes: encoding buffer problem, mix of code and data in + xmlIO.c(Kjartan Maraas), entities in XSD validation (Kasimier Buchcik), + variousXSD validation fixes (Kasimier), memory leak in pattern (Rob + Richards andKasimier), attribute with colon in name (Rob Richards), XPath + leak inerror reporting (Aleksey Sanin), XInclude text include of + selfdocument. + - improvements: Xpath optimizations (Kasimier), XPath object + cache(Kasimier) + + +2.6.25: Jun 6 2006:: +Do not use or package 2.6.25 +2.6.24: Apr 28 2006: + - Portability fixes: configure on Windows, testapi compile on windows + (Kasimier Buchcik, venkat naidu), Borland C++ 6 compile (Eric Zurcher), + HP-UX compiler workaround (Rick Jones), xml2-config bugfix, gcc-4.1 + cleanups, Python detection scheme (Joseph Sacco), UTF-8 file paths on + Windows (Roland Schwingel). + + - Improvements: xmlDOMWrapReconcileNamespaces xmlDOMWrapCloneNode (Kasimier + Buchcik), XML catalog debugging (Rick Jones), update to Unicode 4.01. + - Bug fixes: xmlParseChunk() problem in 2.6.23, xmlParseInNodeContext() + on HTML docs, URI behaviour on Windows (Rob Richards), comment streaming + bug, xmlParseComment (with William Brack), regexp bug fixes (DV & + Youri Golovanov), xmlGetNodePath on text/CDATA (Kasimier), + one Relax-NG interleave bug, xmllint --path and --valid, + XSD bugfixes (Kasimier), remove debug + left in Python bindings (Nic Ferrier), xmlCatalogAdd bug (Martin Cole), + xmlSetProp fixes (Rob Richards), HTML IDness (Rob Richards), a large + number of cleanups and small fixes based on Coverity reports, bug + in character ranges, Unicode tables const (Aivars Kalvans), schemas + fix (Stefan Kost), xmlRelaxNGParse error deallocation, + xmlSchemaAddSchemaDoc error deallocation, error handling on unallowed + code point, ixmllint --nonet to never reach the net (Gary Coady), + line break in writer after end PI (Jason Viers). + - Documentation: man pages updates and cleanups (Daniel Leidert). + - New features: Relax NG structure error handlers. + + +2.6.23: Jan 5 2006: + - portability fixes: Windows (Rob Richards), getaddrinfo on Windows + (Kolja Nowak, Rob Richards), icc warnings (Kjartan Maraas), + --with-minimum compilation fixes (William Brack), error case handling fix + on Solaris (Albert Chin), don't use 'list' as parameter name reported by + Samuel Diaz Garcia, more old Unices portability fixes (Albert Chin), + MinGW compilation (Mark Junker), HP-UX compiler warnings (Rick + Jones), + - code cleanup: xmlReportError (Adrian Mouat), remove xmlBufferClose + (Geert Jansen), unreachable code (Oleksandr Kononenko), refactoring + parsing code (Bjorn Reese) + - bug fixes: xmlBuildRelativeURI and empty path (William Brack), + combinatory explosion and performances in regexp code, leak in + xmlTextReaderReadString(), xmlStringLenDecodeEntities problem (Massimo + Morara), Identity Constraints bugs and a segfault (Kasimier Buchcik), + XPath pattern based evaluation bugs (DV & Kasimier), + xmlSchemaContentModelDump() memory leak (Kasimier), potential leak in + xmlSchemaCheckCSelectorXPath(), xmlTextWriterVSprintf() misuse of + vsnprintf (William Brack), XHTML serialization fix (Rob Richards), CRLF + split problem (William), issues with non-namespaced attributes in + xmlAddChild() xmlAddNextSibling() and xmlAddPrevSibling() (Rob Richards), + HTML parsing of script, Python must not output to stdout (Nic Ferrier), + exclusive C14N namespace visibility (Aleksey Sanin), XSD dataype + totalDigits bug (Kasimier Buchcik), error handling when writing to an + xmlBuffer (Rob Richards), runtest schemas error not reported (Hisashi + Fujinaka), signed/unsigned problem in date/time code (Albert Chin), fix + XSI driven XSD validation (Kasimier), parsing of xs:decimal (Kasimier), + fix DTD writer output (Rob Richards), leak in xmlTextReaderReadInnerXml + (Gary Coady), regexp bug affecting schemas (Kasimier), configuration of + runtime debugging (Kasimier), xmlNodeBufGetContent bug on entity refs + (Oleksandr Kononenko), xmlRegExecPushString2 bug (Sreeni Nair), + compilation and build fixes (Michael Day), removed dependancies on + xmlSchemaValidError (Kasimier), bug with <xml:foo/>, more XPath + pattern based evaluation fixes (Kasimier) + - improvements: XSD Schemas redefinitions/restrictions (Kasimier + Buchcik), node copy checks and fix for attribute (Rob Richards), counted + transition bug in regexps, ctxt->standalone = -2 to indicate no + standalone attribute was found, add xmlSchemaSetParserStructuredErrors() + (Kasimier Buchcik), add xmlTextReaderSchemaValidateCtxt() to API + (Kasimier), handle gzipped HTTP resources (Gary Coady), add + htmlDocDumpMemoryFormat. (Rob Richards), + - documentation: typo (Michael Day), libxml man page (Albert Chin), save + function to XML buffer (Geert Jansen), small doc fix (Aron Stansvik), + + +2.6.22: Sep 12 2005: + - build fixes: compile without schematron (Stéphane Bidoul) + - bug fixes: xmlDebugDumpNode on namespace node (Oleg Paraschenko)i, + CDATA push parser bug, xmlElemDump problem with XHTML1 doc, + XML_FEATURE_xxx clash with expat headers renamed XML_WITH_xxx, fix some + output formatting for meta element (Rob Richards), script and style + XHTML1 serialization (David Madore), Attribute derivation fixups in XSD + (Kasimier Buchcik), better IDC error reports (Kasimier Buchcik) + - improvements: add XML_SAVE_NO_EMPTY xmlSaveOption (Rob Richards), add + XML_SAVE_NO_XHTML xmlSaveOption, XML Schemas improvements preparing for + derive (Kasimier Buchcik). + - documentation: generation of gtk-doc like docs, integration with + devhelp. + + +2.6.21: Sep 4 2005: + - build fixes: Cygwin portability fixes (Gerrit P. Haase), calling + convention problems on Windows (Marcus Boerger), cleanups based on Linus' + sparse tool, update of win32/configure.js (Rob Richards), remove warnings + on Windows(Marcus Boerger), compilation without SAX1, detection of the + Python binary, use $GCC inestad of $CC = 'gcc' (Andrew W. Nosenko), + compilation/link with threads and old gcc, compile problem by C370 on + Z/OS, + - bug fixes: http_proxy environments (Peter Breitenlohner), HTML UTF-8 + bug (Jiri Netolicky), XPath NaN compare bug (William Brack), + htmlParseScript potential bug, Schemas regexp handling of spaces, Base64 + Schemas comparisons NIST passes, automata build error xsd:all, + xmlGetNodePath for namespaced attributes (Alexander Pohoyda), xmlSchemas + foreign namespaces handling, XML Schemas facet comparison (Kupriyanov + Anatolij), xmlSchemaPSimpleTypeErr error report (Kasimier Buchcik), xml: + namespace ahndling in Schemas (Kasimier), empty model group in Schemas + (Kasimier), wilcard in Schemas (Kasimier), URI composition (William), + xs:anyType in Schemas (Kasimier), Python resolver emmitting error + messages directly, Python xmlAttr.parent (Jakub Piotr Clapa), trying to + fix the file path/URI conversion, xmlTextReaderGetAttribute fix (Rob + Richards), xmlSchemaFreeAnnot memleak (Kasimier), HTML UTF-8 + serialization, streaming XPath, Schemas determinism detection problem, + XInclude bug, Schemas context type (Dean Hill), validation fix (Derek + Poon), xmlTextReaderGetAttribute[Ns] namespaces (Rob Richards), Schemas + type fix (Kuba Nowakowski), UTF-8 parser bug, error in encoding handling, + xmlGetLineNo fixes, bug on entities handling, entity name extraction in + error handling with XInclude, text nodes in HTML body tags (Gary Coady), + xml:id and IDness at the treee level fixes, XPath streaming patterns + bugs. + - improvements: structured interfaces for schemas and RNG error reports + (Marcus Boerger), optimization of the char data inner loop parsing + (thanks to Behdad Esfahbod for the idea), schematron validation though + not finished yet, xmlSaveOption to omit XML declaration, keyref match + error reports (Kasimier), formal expression handling code not plugged + yet, more lax mode for the HTML parser, parser XML_PARSE_COMPACT option + for text nodes allocation. + - documentation: xmllint man page had --nonet duplicated + + +2.6.20: Jul 10 2005: + - build fixes: Windows build (Rob Richards), Mingw compilation (Igor + Zlatkovic), Windows Makefile (Igor), gcc warnings (Kasimier and + andriy@google.com), use gcc weak references to pthread to avoid the + pthread dependancy on Linux, compilation problem (Steve Nairn), compiling + of subset (Morten Welinder), IPv6/ss_family compilation (William Brack), + compilation when disabling parts of the library, standalone test + distribution. + - bug fixes: bug in lang(), memory cleanup on errors (William Brack), + HTTP query strings (Aron Stansvik), memory leak in DTD (William), integer + overflow in XPath (William), nanoftp buffer size, pattern "." apth fixup + (Kasimier), leak in tree reported by Malcolm Rowe, replaceNode patch + (Brent Hendricks), CDATA with NULL content (Mark Vakoc), xml:base fixup + on XInclude (William), pattern fixes (William), attribute bug in + exclusive c14n (Aleksey Sanin), xml:space and xml:lang with SAX2 (Rob + Richards), namespace trouble in complex parsing (Malcolm Rowe), XSD type + QNames fixes (Kasimier), XPath streaming fixups (William), RelaxNG bug + (Rob Richards), Schemas for Schemas fixes (Kasimier), removal of ID (Rob + Richards), a small RelaxNG leak, HTML parsing in push mode bug (James + Bursa), failure to detect UTF-8 parsing bugs in CDATA sections, + areBlanks() heuristic failure, duplicate attributes in DTD bug + (William). + - improvements: lot of work on Schemas by Kasimier Buchcik both on + conformance and streaming, Schemas validation messages (Kasimier Buchcik, + Matthew Burgess), namespace removal at the python level (Brent + Hendricks), Update to new Schemas regression tests from W3C/Nist + (Kasimier), xmlSchemaValidateFile() (Kasimier), implementation of + xmlTextReaderReadInnerXml and xmlTextReaderReadOuterXml (James Wert), + standalone test framework and programs, new DOM import APIs + xmlDOMWrapReconcileNamespaces() xmlDOMWrapAdoptNode() and + xmlDOMWrapRemoveNode(), extension of xmllint capabilities for SAX and + Schemas regression tests, xmlStopParser() available in pull mode too, + ienhancement to xmllint --shell namespaces support, Windows port of the + standalone testing tools (Kasimier and William), + xmlSchemaValidateStream() xmlSchemaSAXPlug() and xmlSchemaSAXUnplug() SAX + Schemas APIs, Schemas xmlReader support. + + +2.6.19: Apr 02 2005: + - build fixes: drop .la from RPMs, --with-minimum build fix (William + Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with AIX + 5.3 compiler, fixed elfgcchack.h generation and PLT reduction code on + Linux/ELF/gcc4 + - bug fixes: schemas type decimal fixups (William Brack), xmmlint return + code (Gerry Murphy), small schemas fixes (Matthew Burgess and GUY + Fabrice), workaround "DAV:" namespace brokeness in c14n (Aleksey Sanin), + segfault in Schemas (Kasimier Buchcik), Schemas attribute validation + (Kasimier), Prop related functions and xmlNewNodeEatName (Rob Richards), + HTML serialization of name attribute on a elements, Python error handlers + leaks and improvement (Brent Hendricks), uninitialized variable in + encoding code, Relax-NG validation bug, potential crash if + gnorableWhitespace is NULL, xmlSAXParseDoc and xmlParseDoc signatures, + switched back to assuming UTF-8 in case no encoding is given at + serialization time + - improvements: lot of work on Schemas by Kasimier Buchcik on facets + checking and also mixed handling. + - + + +2.6.18: Mar 13 2005: + - build fixes: warnings (Peter Breitenlohner), testapi.c generation, + Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed), + some gcc4 fixes, HP-UX portability fixes (Rick Jones). + - bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and + xmlreader stopping on non-fatal errors, thread support for dictionnaries + reference counting (Gary Coady), internal subset and push problem, URL + saved in xmlCopyDoc, various schemas bug fixes (Kasimier), Python paths + fixup (Stephane Bidoul), xmlGetNodePath and namespaces, xmlSetNsProp fix + (Mike Hommey), warning should not count as error (William Brack), + xmlCreatePushParser empty chunk, XInclude parser flags (William), cleanup + FTP and HTTP code to reuse the uri parsing and IPv6 (William), + xmlTextWriterStartAttributeNS fix (Rob Richards), XMLLINT_INDENT being + empty (William), xmlWriter bugs (Rob Richards), multithreading on Windows + (Rich Salz), xmlSearchNsByHref fix (Kasimier), Python binding leak (Brent + Hendricks), aliasing bug exposed by gcc4 on s390, xmlTextReaderNext bug + (Rob Richards), Schemas decimal type fixes (William Brack), + xmlByteConsumed static buffer (Ben Maurer). + - improvement: speedup parsing comments and DTDs, dictionnary support for + hash tables, Schemas Identity constraints (Kasimier), streaming XPath + subset, xmlTextReaderReadString added (Bjorn Reese), Schemas canonical + values handling (Kasimier), add xmlTextReaderByteConsumed (Aron + Stansvik), + - Documentation: Wiki support (Joel Reed) + + +2.6.17: Jan 16 2005: + - build fixes: Windows, warnings removal (William Brack), + maintainer-clean dependency(William), build in a different directory + (William), fixing --with-minimum configure build (William), BeOS build + (Marcin Konicki), Python-2.4 detection (William), compilation on AIX (Dan + McNichol) + - bug fixes: xmlTextReaderHasAttributes (Rob Richards), xmlCtxtReadFile() + to use the catalog(s), loop on output (William Brack), XPath memory leak, + ID deallocation problem (Steve Shepard), debugDumpNode crash (William), + warning not using error callback (William), xmlStopParser bug (William), + UTF-16 with BOM on DTDs (William), namespace bug on empty elements in + push mode (Rob Richards), line and col computations fixups (Aleksey + Sanin), xmlURIEscape fix (William), xmlXPathErr on bad range (William), + patterns with too many steps, bug in RNG choice optimization, line number + sometimes missing. + - improvements: XSD Schemas (Kasimier Buchcik), python generator + (William), xmlUTF8Strpos speedup (William), unicode Python strings + (William), XSD error reports (Kasimier Buchcik), Python __str__ call + serialize(). + - new APIs: added xmlDictExists(), GetLineNumber and GetColumnNumber for + the xmlReader (Aleksey Sanin), Dynamic Shared Libraries APIs (mostly Joel + Reed), error extraction API from regexps, new XMLSave option for format + (Phil Shafer) + - documentation: site improvement (John Fleck), FAQ entries + (William). + + +2.6.16: Nov 10 2004: + - general hardening and bug fixing crossing all the API based on new + automated regression testing + - build fix: IPv6 build and test on AIX (Dodji Seketeli) + - bug fixes: problem with XML::Libxml reported by Petr Pajas, encoding + conversion functions return values, UTF-8 bug affecting XPath reported by + Markus Bertheau, catalog problem with NULL entries (William Brack) + - documentation: fix to xmllint man page, some API function descritpion + were updated. + - improvements: DTD validation APIs provided at the Python level (Brent + Hendricks) + + +2.6.15: Oct 27 2004: + - security fixes on the nanoftp and nanohttp modules + - build fixes: xmllint detection bug in configure, building outside the + source tree (Thomas Fitzsimmons) + - bug fixes: HTML parser on broken ASCII chars in names (William), Python + paths (Malcolm Tredinnick), xmlHasNsProp and default namespace (William), + saving to python file objects (Malcolm Tredinnick), DTD lookup fix + (Malcolm), save back <group> in catalogs (William), tree build + fixes (DV and Rob Richards), Schemas memory bug, structured error handler + on Python 64bits, thread local memory deallocation, memory leak reported + by Volker Roth, xmlValidateDtd in the presence of an internal subset, + entities and _private problem (William), xmlBuildRelativeURI error + (William). + - improvements: better XInclude error reports (William), tree debugging + module and tests, convenience functions at the Reader API (Graham + Bennett), add support for PI in the HTML parser. + + +2.6.14: Sep 29 2004: + - build fixes: configure paths for xmllint and xsltproc, compilation + without HTML parser, compilation warning cleanups (William Brack & + Malcolm Tredinnick), VMS makefile update (Craig Berry), + - bug fixes: xmlGetUTF8Char (William Brack), QName properties (Kasimier + Buchcik), XInclude testing, Notation serialization, UTF8ToISO8859x + transcoding (Mark Itzcovitz), lots of XML Schemas cleanup and fixes + (Kasimier), ChangeLog cleanup (Stepan Kasal), memory fixes (Mark Vakoc), + handling of failed realloc(), out of bound array adressing in Schemas + date handling, Python space/tabs cleanups (Malcolm Tredinnick), NMTOKENS + E20 validation fix (Malcolm), + - improvements: added W3C XML Schemas testsuite (Kasimier Buchcik), add + xmlSchemaValidateOneElement (Kasimier), Python exception hierearchy + (Malcolm Tredinnick), Python libxml2 driver improvement (Malcolm + Tredinnick), Schemas support for xsi:schemaLocation, + xsi:noNamespaceSchemaLocation, xsi:type (Kasimier Buchcik) + + +2.6.13: Aug 31 2004: + - build fixes: Windows and zlib (Igor Zlatkovic), -O flag with gcc, + Solaris compiler warning, fixing RPM BuildRequires, + - fixes: DTD loading on Windows (Igor), Schemas error reports APIs + (Kasimier Buchcik), Schemas validation crash, xmlCheckUTF8 (William Brack + and Julius Mittenzwei), Schemas facet check (Kasimier), default namespace + problem (William), Schemas hexbinary empty values, encoding error could + genrate a serialization loop. + - Improvements: Schemas validity improvements (Kasimier), added --path + and --load-trace options to xmllint + - documentation: tutorial update (John Fleck) + + +2.6.12: Aug 22 2004: + - build fixes: fix --with-minimum, elfgcchack.h fixes (Peter + Breitenlohner), perl path lookup (William), diff on Solaris (Albert + Chin), some 64bits cleanups. + - Python: avoid a warning with 2.3 (William Brack), tab and space mixes + (William), wrapper generator fixes (William), Cygwin support (Gerrit P. + Haase), node wrapper fix (Marc-Antoine Parent), XML Schemas support + (Torkel Lyng) + - Schemas: a lot of bug fixes and improvements from Kasimier Buchcik + - fixes: RVT fixes (William), XPath context resets bug (William), memory + debug (Steve Hay), catalog white space handling (Peter Breitenlohner), + xmlReader state after attribute reading (William), structured error + handler (William), XInclude generated xml:base fixup (William), Windows + memory reallocation problem (Steve Hay), Out of Memory conditions + handling (William and Olivier Andrieu), htmlNewDoc() charset bug, + htmlReadMemory init (William), a posteriori validation DTD base + (William), notations serialization missing, xmlGetNodePath (Dodji), + xmlCheckUTF8 (Diego Tartara), missing line numbers on entity + (William) + - improvements: DocBook catalog build scrip (William), xmlcatalog tool + (Albert Chin), xmllint --c14n option, no_proxy environment (Mike Hommey), + xmlParseInNodeContext() addition, extend xmllint --shell, allow XInclude + to not generate start/end nodes, extend xmllint --version to include CVS + tag (William) + - documentation: web pages fixes, validity API docs fixes (William) + schemas API fix (Eric Haszlakiewicz), xmllint man page (John Fleck) + + +2.6.11: July 5 2004: + - Schemas: a lot of changes and improvements by Kasimier Buchcik for + attributes, namespaces and simple types. + - build fixes: --with-minimum (William Brack), some gcc cleanup + (William), --with-thread-alloc (William) + - portability: Windows binary package change (Igor Zlatkovic), Catalog + path on Windows + - documentation: update to the tutorial (John Fleck), xmllint return code + (John Fleck), man pages (Ville Skytta), + - bug fixes: C14N bug serializing namespaces (Aleksey Sanin), testSAX + properly initialize the library (William), empty node set in XPath + (William), xmlSchemas errors (William), invalid charref problem pointed + by Morus Walter, XInclude xml:base generation (William), Relax-NG bug + with div processing (William), XPointer and xml:base problem(William), + Reader and entities, xmllint return code for schemas (William), reader + streaming problem (Steve Ball), DTD serialization problem (William), + libxml.m4 fixes (Mike Hommey), do not provide destructors as methods on + Python classes, xmlReader buffer bug, Python bindings memory interfaces + improvement (with Stéphane Bidoul), Fixed the push parser to be back to + synchronous behaviour. + - improvement: custom per-thread I/O enhancement (Rob Richards), register + namespace in debug shell (Stefano Debenedetti), Python based regression + test for non-Unix users (William), dynamically increase the number of + XPath extension functions in Python and fix a memory leak (Marc-Antoine + Parent and William) + - performance: hack done with Arjan van de Ven to reduce ELF footprint + and generated code on Linux, plus use gcc runtime profiling to optimize + the code generated in the RPM packages. + + +2.6.10: May 17 2004: + - Web page generated for ChangeLog + - build fixes: --without-html problems, make check without make all + - portability: problem with xpath.c on Windows (MSC and Borland), memcmp + vs. strncmp on Solaris, XPath tests on Windows (Mark Vakoc), C++ do not + use "list" as parameter name, make tests work with Python 1.5 (Ed + Davis), + - improvements: made xmlTextReaderMode public, small buffers resizing + (Morten Welinder), add --maxmem option to xmllint, add + xmlPopInputCallback() for Matt Sergeant, refactoring of serialization + escaping, added escaping customization + - bugfixes: xsd:extension (Taihei Goi), assorted regexp bugs (William + Brack), xmlReader end of stream problem, node deregistration with reader, + URI escaping and filemanes, XHTML1 formatting (Nick Wellnhofer), regexp + transition reduction (William), various XSD Schemas fixes (Kasimier + Buchcik), XInclude fallback problem (William), weird problems with DTD + (William), structured error handler callback context (William), reverse + xmlEncodeSpecialChars() behaviour back to escaping '"' + + +2.6.9: Apr 18 2004: + - implement xml:id Working Draft, relaxed XPath id() checking + - bugfixes: xmlCtxtReset (Brent Hendricks), line number and CDATA (Dave + Beckett), Relax-NG compilation (William Brack), Regexp patches (with + William), xmlUriEscape (Mark Vakoc), a Relax-NG notAllowed problem (with + William), Relax-NG name classes compares (William), XInclude duplicate + fallback (William), external DTD encoding detection (William), a DTD + validation bug (William), xmlReader Close() fix, recusive extention + schemas + - improvements: use xmlRead* APIs in test tools (Mark Vakoc), indenting + save optimization, better handle IIS broken HTTP redirect behaviour (Ian + Hummel), HTML parser frameset (James Bursa), libxml2-python RPM + dependancy, XML Schemas union support (Kasimier Buchcik), warning removal + clanup (William), keep ChangeLog compressed when installing from RPMs + - documentation: examples and xmlDocDumpMemory docs (John Fleck), new + example (load, xpath, modify, save), xmlCatalogDump() comments, + - Windows: Borland C++ builder (Eric Zurcher), work around Microsoft + compiler NaN handling bug (Mark Vakoc) + + +2.6.8: Mar 23 2004: + - First step of the cleanup of the serialization code and APIs + - XML Schemas: mixed content (Adam Dickmeiss), QName handling fixes (Adam + Dickmeiss), anyURI for "" (John Belmonte) + - Python: Canonicalization C14N support added (Anthony Carrico) + - xmlDocCopyNode() extension (William) + - Relax-NG: fix when processing XInclude results (William), external + reference in interleave (William), missing error on <choice> + failure (William), memory leak in schemas datatype facets. + - xmlWriter: patch for better DTD support (Alfred Mickautsch) + - bug fixes: xmlXPathLangFunction memory leak (Mike Hommey and William + Brack), no ID errors if using HTML_PARSE_NOERROR, xmlcatalog fallbacks to + URI on SYSTEM lookup failure, XInclude parse flags inheritance (William), + XInclude and XPointer fixes for entities (William), XML parser bug + reported by Holger Rauch, nanohttp fd leak (William), regexps char + groups '-' handling (William), dictionnary reference counting problems, + do not close stderr. + - performance patches from Petr Pajas + - Documentation fixes: XML_CATALOG_FILES in man pages (Mike Hommey) + - compilation and portability fixes: --without-valid, catalog cleanups + (Peter Breitenlohner), MingW patch (Roland Schwingel), cross-compilation + to Windows (Christophe de Vienne), --with-html-dir fixup (Julio Merino + Vidal), Windows build (Eric Zurcher) + + +2.6.7: Feb 23 2004: + - documentation: tutorial updates (John Fleck), benchmark results + - xmlWriter: updates and fixes (Alfred Mickautsch, Lucas Brasilino) + - XPath optimization (Petr Pajas) + - DTD ID handling optimization + - bugfixes: xpath number with > 19 fractional (William Brack), push + mode with unescaped '>' characters, fix xmllint --stream --timing, fix + xmllint --memory --stream memory usage, xmlAttrSerializeTxtContent + handling NULL, trying to fix Relax-NG/Perl interface. + - python: 2.3 compatibility, whitespace fixes (Malcolm Tredinnick) + - Added relaxng option to xmllint --shell + + +2.6.6: Feb 12 2004: + - nanohttp and nanoftp: buffer overflow error on URI parsing (Igor and + William) reported by Yuuichi Teranishi + - bugfixes: make test and path issues, xmlWriter attribute serialization + (William Brack), xmlWriter indentation (William), schemas validation + (Eric Haszlakiewicz), XInclude dictionnaries issues (William and Oleg + Paraschenko), XInclude empty fallback (William), HTML warnings (William), + XPointer in XInclude (William), Python namespace serialization, + isolat1ToUTF8 bound error (Alfred Mickautsch), output of parameter + entities in internal subset (William), internal subset bug in push mode, + <xs:all> fix (Alexey Sarytchev) + - Build: fix for automake-1.8 (Alexander Winston), warnings removal + (Philip Ludlam), SOCKLEN_T detection fixes (Daniel Richard), fix + --with-minimum configuration. + - XInclude: allow the 2001 namespace without warning. + - Documentation: missing example/index.html (John Fleck), version + dependancies (John Fleck) + - reader API: structured error reporting (Steve Ball) + - Windows compilation: mingw, msys (Mikhail Grushinskiy), function + prototype (Cameron Johnson), MSVC6 compiler warnings, _WINSOCKAPI_ + patch + - Parsers: added xmlByteConsumed(ctxt) API to get the byte offest in + input. + + +2.6.5: Jan 25 2004: + - Bugfixes: dictionnaries for schemas (William Brack), regexp segfault + (William), xs:all problem (William), a number of XPointer bugfixes + (William), xmllint error go to stderr, DTD validation problem with + namespace, memory leak (William), SAX1 cleanup and minimal options fixes + (Mark Vadoc), parser context reset on error (Shaun McCance), XPath union + evaluation problem (William) , xmlReallocLoc with NULL (Aleksey Sanin), + XML Schemas double free (Steve Ball), XInclude with no href, argument + callbacks order for XPath callbacks (Frederic Peters) + - Documentation: python scripts (William Brack), xslt stylesheets (John + Fleck), doc (Sven Zimmerman), I/O example. + - Python bindings: fixes (William), enum support (Stéphane Bidoul), + structured error reporting (Stéphane Bidoul) + - XInclude: various fixes for conformance, problem related to dictionnary + references (William & me), recursion (William) + - xmlWriter: indentation (Lucas Brasilino), memory leaks (Alfred + Mickautsch), + - xmlSchemas: normalizedString datatype (John Belmonte) + - code cleanup for strings functions (William) + - Windows: compiler patches (Mark Vakoc) + - Parser optimizations, a few new XPath and dictionnary APIs for future + XSLT optimizations. + + +2.6.4: Dec 24 2003: + - Windows build fixes (Igor Zlatkovic) + - Some serious XInclude problems reported by Oleg Paraschenko and + - Unix and Makefile packaging fixes (me, William Brack, + - Documentation improvements (John Fleck, William Brack), example fix + (Lucas Brasilino) + - bugfixes: xmlTextReaderExpand() with xmlReaderWalker, XPath handling of + NULL strings (William Brack) , API building reader or parser from + filedescriptor should not close it, changed XPath sorting to be stable + again (William Brack), xmlGetNodePath() generating '(null)' (William + Brack), DTD validation and namespace bug (William Brack), XML Schemas + double inclusion behaviour + + +2.6.3: Dec 10 2003: + - documentation updates and cleanup (DV, William Brack, John Fleck) + - added a repository of examples, examples from Aleksey Sanin, Dodji + Seketeli, Alfred Mickautsch + - Windows updates: Mark Vakoc, Igor Zlatkovic, Eric Zurcher, Mingw + (Kenneth Haley) + - Unicode range checking (William Brack) + - code cleanup (William Brack) + - Python bindings: doc (John Fleck), bug fixes + - UTF-16 cleanup and BOM issues (William Brack) + - bug fixes: ID and xmlReader validation, XPath (William Brack), + xmlWriter (Alfred Mickautsch), hash.h inclusion problem, HTML parser + (James Bursa), attribute defaulting and validation, some serialization + cleanups, XML_GET_LINE macro, memory debug when using threads (William + Brack), serialization of attributes and entities content, xmlWriter + (Daniel Schulman) + - XInclude bugfix, new APIs and update to the last version including the + namespace change. + - XML Schemas improvements: include (Robert Stepanek), import and + namespace handling, fixed the regression tests troubles, added examples + based on Eric van der Vlist book, regexp fixes + - preliminary pattern support for streaming (needed for schemas + constraints), added xmlTextReaderPreservePattern() to collect subdocument + when streaming. + - various fixes in the structured error handling + + +2.6.2: Nov 4 2003: + - XPath context unregistration fixes + - text node coalescing fixes (Mark Lilback) + - API to screate a W3C Schemas from an existing document (Steve Ball) + - BeOS patches (Marcin 'Shard' Konicki) + - xmlStrVPrintf function added (Aleksey Sanin) + - compilation fixes (Mark Vakoc) + - stdin parsing fix (William Brack) + - a posteriori DTD validation fixes + - xmlReader bug fixes: Walker fixes, python bindings + - fixed xmlStopParser() to really stop the parser and errors + - always generate line numbers when using the new xmlReadxxx + functions + - added XInclude support to the xmlReader interface + - implemented XML_PARSE_NONET parser option + - DocBook XSLT processing bug fixed + - HTML serialization for <p> elements (William Brack and me) + - XPointer failure in XInclude are now handled as resource errors + - fixed xmllint --html to use the HTML serializer on output (added + --xmlout to implement the previous behaviour of saving it using the XML + serializer) + + +2.6.1: Oct 28 2003: + - Mostly bugfixes after the big 2.6.0 changes + - Unix compilation patches: libxml.m4 (Patrick Welche), warnings cleanup + (William Brack) + - Windows compilation patches (Joachim Bauch, Stephane Bidoul, Igor + Zlatkovic) + - xmlWriter bugfix (Alfred Mickautsch) + - chvalid.[ch]: couple of fixes from Stephane Bidoul + - context reset: error state reset, push parser reset (Graham + Bennett) + - context reuse: generate errors if file is not readable + - defaulted attributes for element coming from internal entities + (Stephane Bidoul) + - Python: tab and spaces mix (William Brack) + - Error handler could crash in DTD validation in 2.6.0 + - xmlReader: do not use the document or element _private field + - testSAX.c: avoid a problem with some PIs (Massimo Morara) + - general bug fixes: mandatory encoding in text decl, serializing + Document Fragment nodes, xmlSearchNs 2.6.0 problem (Kasimier Buchcik), + XPath errors not reported, slow HTML parsing of large documents. + + +2.6.0: Oct 20 2003: + - Major revision release: should be API and ABI compatible but got a lot + of change + - Increased the library modularity, far more options can be stripped out, + a --with-minimum configuration will weight around 160KBytes + - Use per parser and per document dictionnary, allocate names and small + text nodes from the dictionnary + - Switch to a SAX2 like parser rewrote most of the XML parser core, + provides namespace resolution and defaulted attributes, minimize memory + allocations and copies, namespace checking and specific error handling, + immutable buffers, make predefined entities static structures, etc... + - rewrote all the error handling in the library, all errors can be + intercepted at a structured level, with precise information + available. + - New simpler and more generic XML and HTML parser APIs, allowing to + easilly modify the parsing options and reuse parser context for multiple + consecutive documents. + - Similar new APIs for the xmlReader, for options and reuse, provided new + functions to access content as const strings, use them for Python + bindings + - a lot of other smaller API improvements: xmlStrPrintf (Aleksey Sanin), + Walker i.e. reader on a document tree based on Alfred Mickautsch code, + make room in nodes for line numbers, reference counting and future PSVI + extensions, generation of character ranges to be checked with faster + algorithm (William), xmlParserMaxDepth (Crutcher Dunnavant), buffer + access + - New xmlWriter API provided by Alfred Mickautsch + - Schemas: base64 support by Anthony Carrico + - Parser<->HTTP integration fix, proper processing of the Mime-Type + and charset information if available. + - Relax-NG: bug fixes including the one reported by Martijn Faassen and + zeroOrMore, better error reporting. + - Python bindings (Stéphane Bidoul), never use stdout for errors + output + - Portability: all the headers have macros for export and calling + convention definitions (Igor Zlatkovic), VMS update (Craig A. Berry), + Windows: threads (Jesse Pelton), Borland compiler (Eric Zurcher, Igor), + Mingw (Igor), typos (Mark Vakoc), beta version (Stephane Bidoul), + warning cleanups on AIX and MIPS compilers (William Brack), BeOS (Marcin + 'Shard' Konicki) + - Documentation fixes and README (William Brack), search fix (William), + tutorial updates (John Fleck), namespace docs (Stefan Kost) + - Bug fixes: xmlCleanupParser (Dave Beckett), threading uninitialized + mutexes, HTML doctype lowercase, SAX/IO (William), compression detection + and restore (William), attribute declaration in DTDs (William), namespace + on attribute in HTML output (William), input filename (Rob Richards), + namespace DTD validation, xmlReplaceNode (Chris Ryland), I/O callbacks + (Markus Keim), CDATA serialization (Shaun McCance), xmlReader (Peter + Derr), high codepoint charref like , buffer access in push + mode (Justin Fletcher), TLS threads on Windows (Jesse Pelton), XPath bug + (William), xmlCleanupParser (Marc Liyanage), CDATA output (William), HTTP + error handling. + - xmllint options: --dtdvalidfpi for Tobias Reif, --sax1 for compat + testing, --nodict for building without tree dictionnary, --nocdata to + replace CDATA by text, --nsclean to remove surperfluous namespace + declarations + - added xml2-config --libtool-libs option from Kevin P. Fleming + - a lot of profiling and tuning of the code, speedup patch for + xmlSearchNs() by Luca Padovani. The xmlReader should do far less + allocation and it speed should get closer to SAX. Chris Anderson worked + on speeding and cleaning up repetitive checking code. + - cleanup of "make tests" + - libxml-2.0-uninstalled.pc from Malcolm Tredinnick + - deactivated the broken docBook SGML parser code and plugged the XML + parser instead. + + +2.5.11: Sep 9 2003: +A bugfix only release: - risk of crash in Relax-NG + - risk of crash when using multithreaded programs + + +2.5.10: Aug 15 2003: +A bugfixes only release - Windows Makefiles (William Brack) + - UTF-16 support fixes (Mark Itzcovitz) + - Makefile and portability (William Brack) automake, Linux alpha, Mingw + on Windows (Mikhail Grushinskiy) + - HTML parser (Oliver Stoeneberg) + - XInclude performance problem reported by Kevin Ruscoe + - XML parser performance problem reported by Grant Goodale + - xmlSAXParseDTD() bug fix from Malcolm Tredinnick + - and a couple other cleanup + + +2.5.9: Aug 9 2003: + - bugfixes: IPv6 portability, xmlHasNsProp (Markus Keim), Windows build + (Wiliam Brake, Jesse Pelton, Igor), Schemas (Peter Sobisch), threading + (Rob Richards), hexBinary type (), UTF-16 BOM (Dodji Seketeli), + xmlReader, Relax-NG schemas compilation, namespace handling, EXSLT (Sean + Griffin), HTML parsing problem (William Brack), DTD validation for mixed + content + namespaces, HTML serialization, library initialization, + progressive HTML parser + - better interfaces for Relax-NG error handling (Joachim Bauch, ) + - adding xmlXIncludeProcessTree() for XInclud'ing in a subtree + - doc fixes and improvements (John Fleck) + - configure flag for -with-fexceptions when embedding in C++ + - couple of new UTF-8 helper functions (William Brack) + - general encoding cleanup + ISO-8859-x without iconv (Peter Jacobi) + - xmlTextReader cleanup + enum for node types (Bjorn Reese) + - general compilation/warning cleanup Solaris/HP-UX/... (William + Brack) + + +2.5.8: Jul 6 2003: + - bugfixes: XPath, XInclude, file/URI mapping, UTF-16 save (Mark + Itzcovitz), UTF-8 checking, URI saving, error printing (William Brack), + PI related memleak, compilation without schemas or without xpath (Joerg + Schmitz-Linneweber/Garry Pennington), xmlUnlinkNode problem with DTDs, + rpm problem on , i86_64, removed a few compilation problems from 2.5.7, + xmlIOParseDTD, and xmlSAXParseDTD (Malcolm Tredinnick) + - portability: DJGPP (MsDos) , OpenVMS (Craig A. Berry) + - William Brack fixed multithreading lock problems + - IPv6 patch for FTP and HTTP accesses (Archana Shah/Wipro) + - Windows fixes (Igor Zlatkovic, Eric Zurcher), threading (Stéphane + Bidoul) + - A few W3C Schemas Structure improvements + - W3C Schemas Datatype improvements (Charlie Bozeman) + - Python bindings for thread globals (Stéphane Bidoul), and method/class + generator + - added --nonet option to xmllint + - documentation improvements (John Fleck) + + +2.5.7: Apr 25 2003: + - Relax-NG: Compiling to regexp and streaming validation on top of the + xmlReader interface, added to xmllint --stream + - xmlReader: Expand(), Next() and DOM access glue, bug fixes + - Support for large files: RGN validated a 4.5GB instance + - Thread support is now configured in by default + - Fixes: update of the Trio code (Bjorn), WXS Date and Duration fixes + (Charles Bozeman), DTD and namespaces (Brent Hendricks), HTML push parser + and zero bytes handling, some missing Windows file path conversions, + behaviour of the parser and validator in the presence of "out of memory" + error conditions + - extended the API to be able to plug a garbage collecting memory + allocator, added xmlMallocAtomic() and modified the allocations + accordingly. + - Performances: removed excessive malloc() calls, speedup of the push and + xmlReader interfaces, removed excessive thread locking + - Documentation: man page (John Fleck), xmlReader documentation + - Python: adding binding for xmlCatalogAddLocal (Brent M Hendricks) + + +2.5.6: Apr 1 2003: + - Fixed W3C XML Schemas datatype, should be compliant now except for + binHex and base64 which are not supported yet. + - bug fixes: non-ASCII IDs, HTML output, XInclude on large docs and + XInclude entities handling, encoding detection on external subsets, XML + Schemas bugs and memory leaks, HTML parser (James Bursa) + - portability: python/trio (Albert Chin), Sun compiler warnings + - documentation: added --relaxng option to xmllint man page (John) + - improved error reporting: xml:space, start/end tag mismatches, Relax NG + errors + + +2.5.5: Mar 24 2003: + - Lot of fixes on the Relax NG implementation. More testing including + DocBook and TEI examples. + - Increased the support for W3C XML Schemas datatype + - Several bug fixes in the URI handling layer + - Bug fixes: HTML parser, xmlReader, DTD validation, XPath, encoding + conversion, line counting in the parser. + - Added support for $XMLLINT_INDENT environment variable, FTP delete + - Fixed the RPM spec file name + + +2.5.4: Feb 20 2003: + - Conformance testing and lot of fixes on Relax NG and XInclude + implementation + - Implementation of XPointer element() scheme + - Bug fixes: XML parser, XInclude entities merge, validity checking on + namespaces, + 2 serialization bugs, node info generation problems, a DTD regexp + generation problem. + + - Portability: windows updates and path canonicalization (Igor) + - A few typo fixes (Kjartan Maraas) + - Python bindings generator fixes (Stephane Bidoul) + + +2.5.3: Feb 10 2003: + - RelaxNG and XML Schemas datatypes improvements, and added a first + version of RelaxNG Python bindings + - Fixes: XLink (Sean Chittenden), XInclude (Sean Chittenden), API fix for + serializing namespace nodes, encoding conversion bug, XHTML1 + serialization + - Portability fixes: Windows (Igor), AMD 64bits RPM spec file + + +2.5.2: Feb 5 2003: + - First implementation of RelaxNG, added --relaxng flag to xmllint + - Schemas support now compiled in by default. + - Bug fixes: DTD validation, namespace checking, XInclude and entities, + delegateURI in XML Catalogs, HTML parser, XML reader (Stéphane Bidoul), + XPath parser and evaluation, UTF8ToUTF8 serialization, XML reader memory + consumption, HTML parser, HTML serialization in the presence of + namespaces + - added an HTML API to check elements and attributes. + - Documentation improvement, PDF for the tutorial (John Fleck), doc + patches (Stefan Kost) + - Portability fixes: NetBSD (Julio Merino), Windows (Igor Zlatkovic) + - Added python bindings for XPointer, contextual error reporting + (Stéphane Bidoul) + - URI/file escaping problems (Stefano Zacchiroli) + + +2.5.1: Jan 8 2003: + - Fixes a memory leak and configuration/compilation problems in 2.5.0 + - documentation updates (John) + - a couple of XmlTextReader fixes + + +2.5.0: Jan 6 2003: + - New XmltextReader interface based on C# + API (with help of Stéphane Bidoul) + - Windows: more exports, including the new API (Igor) + - XInclude fallback fix + - Python: bindings for the new API, packaging (Stéphane Bidoul), + drv_libxml2.py Python xml.sax driver (Stéphane Bidoul), fixes, speedup + and iterators for Python-2.2 (Hannu Krosing) + - Tutorial fixes (john Fleck and Niraj Tolia) xmllint man update + (John) + - Fix an XML parser bug raised by Vyacheslav Pindyura + - Fix for VMS serialization (Nigel Hall) and config (Craig A. Berry) + - Entities handling fixes + - new API to optionally track node creation and deletion (Lukas + Schroeder) + - Added documentation for the XmltextReader interface and some XML guidelines + + +2.4.30: Dec 12 2002: + - 2.4.29 broke the python bindings, rereleasing + - Improvement/fixes of the XML API generator, and couple of minor code + fixes. + + +2.4.29: Dec 11 2002: + - Windows fixes (Igor): Windows CE port, pthread linking, python bindings + (Stéphane Bidoul), Mingw (Magnus Henoch), and export list updates + - Fix for prev in python bindings (ERDI Gergo) + - Fix for entities handling (Marcus Clarke) + - Refactored the XML and HTML dumps to a single code path, fixed XHTML1 + dump + - Fix for URI parsing when handling URNs with fragment identifiers + - Fix for HTTP URL escaping problem + - added an TextXmlReader (C#) like API (work in progress) + - Rewrote the API in XML generation script, includes a C parser and saves + more information needed for C# bindings + + +2.4.28: Nov 22 2002: + - a couple of python binding fixes + - 2 bug fixes in the XML push parser + - potential memory leak removed (Martin Stoilov) + - fix to the configure script for Unix (Dimitri Papadopoulos) + - added encoding support for XInclude parse="text" + - autodetection of XHTML1 and specific serialization rules added + - nasty threading bug fixed (William Brack) + + +2.4.27: Nov 17 2002: + - fixes for the Python bindings + - a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(), + HTML parser, Schemas (Charles Bozeman), document fragment support + (Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer, + xmlFreeNode(), xmlSAXParseMemory (Peter Jones), xmlGetNodePath (Petr + Pajas), entities processing + - added grep to xmllint --shell + - VMS update patch from Craig A. Berry + - cleanup of the Windows build with support for more compilers (Igor), + better thread support on Windows + - cleanup of Unix Makefiles and spec file + - Improvements to the documentation (John Fleck) + + +2.4.26: Oct 18 2002: + - Patches for Windows CE port, improvements on Windows paths handling + - Fixes to the validation code (DTD and Schemas), xmlNodeGetPath() , + HTML serialization, Namespace compliance, and a number of small + problems + + +2.4.25: Sep 26 2002: + - A number of bug fixes: XPath, validation, Python bindings, DOM and + tree, xmlI/O, Html + - Serious rewrite of XInclude + - Made XML Schemas regexp part of the default build and APIs, small fix + and improvement of the regexp core + - Changed the validation code to reuse XML Schemas regexp APIs + - Better handling of Windows file paths, improvement of Makefiles (Igor, + Daniel Gehriger, Mark Vakoc) + - Improved the python I/O bindings, the tests, added resolver and regexp + APIs + - New logos from Marc Liyanage + - Tutorial improvements: John Fleck, Christopher Harris + - Makefile: Fixes for AMD x86_64 (Mandrake), DESTDIR (Christophe + Merlet) + - removal of all stderr/perror use for error reporting + - Better error reporting: XPath and DTD validation + - update of the trio portability layer (Bjorn Reese) + +2.4.24: Aug 22 2002 - XPath fixes (William), xf:escape-uri() (Wesley Terpstra) + - Python binding fixes: makefiles (William), generator, rpm build, x86-64 + (fcrozat) + - HTML <style> and boolean attributes serializer fixes + - C14N improvements by Aleksey + - doc cleanups: Rick Jones + - Windows compiler makefile updates: Igor and Elizabeth Barham + - XInclude: implementation of fallback and xml:base fixup added + + +2.4.23: July 6 2002: + - performances patches: Peter Jacobi + - c14n fixes, testsuite and performances: Aleksey Sanin + - added xmlDocFormatDump: Chema Celorio + - new tutorial: John Fleck + - new hash functions and performances: Sander Vesik, portability fix from + Peter Jacobi + - a number of bug fixes: XPath (William Brack, Richard Jinks), XML and + HTML parsers, ID lookup function + - removal of all remaining sprintf: Aleksey Sanin + + +2.4.22: May 27 2002: + - a number of bug fixes: configure scripts, base handling, parser, memory + usage, HTML parser, XPath, documentation (Christian Cornelssen), + indentation, URI parsing + - Optimizations for XMLSec, fixing and making public some of the network + protocol handlers (Aleksey) + - performance patch from Gary Pennington + - Charles Bozeman provided date and time support for XML Schemas + datatypes + + +2.4.21: Apr 29 2002: +This release is both a bug fix release and also contains the early XML +Schemas structures at +http://www.w3.org/TR/xmlschema-1/ + and datatypes at +http://www.w3.org/TR/xmlschema-2/ + code, beware, all +interfaces are likely to change, there is huge holes, it is clearly a work in +progress and don't even think of putting this code in a production system, +it's actually not compiled in by default. The real fixes are: - a couple of bugs or limitations introduced in 2.4.20 + - patches for Borland C++ and MSC by Igor + - some fixes on XPath strings and conformance patches by Richard + Jinks + - patch from Aleksey for the ExcC14N specification + - OSF/1 bug fix by Bjorn + + +2.4.20: Apr 15 2002: + - bug fixes: file descriptor leak, XPath, HTML output, DTD validation + - XPath conformance testing by Richard Jinks + - Portability fixes: Solaris, MPE/iX, Windows, OSF/1, python bindings, + libxml.m4 + + +2.4.19: Mar 25 2002: + - bug fixes: half a dozen XPath bugs, Validation, ISO-Latin to UTF8 + encoder + - portability fixes in the HTTP code + - memory allocation checks using valgrind, and profiling tests + - revamp of the Windows build and Makefiles + + +2.4.18: Mar 18 2002: + - bug fixes: tree, SAX, canonicalization, validation, portability, + XPath + - removed the --with-buffer option it was becoming unmaintainable + - serious cleanup of the Python makefiles + - speedup patch to XPath very effective for DocBook stylesheets + - Fixes for Windows build, cleanup of the documentation + + +2.4.17: Mar 8 2002: + - a lot of bug fixes, including "namespace nodes have no parents in + XPath" + - fixed/improved the Python wrappers, added more examples and more + regression tests, XPath extension functions can now return node-sets + - added the XML Canonicalization support from Aleksey Sanin + + +2.4.16: Feb 20 2002: + - a lot of bug fixes, most of them were triggered by the XML Testsuite + from OASIS and W3C. Compliance has been significantly improved. + - a couple of portability fixes too. + + +2.4.15: Feb 11 2002: + - Fixed the Makefiles, especially the python module ones + - A few bug fixes and cleanup + - Includes cleanup + + +2.4.14: Feb 8 2002: + - Change of License to the MIT + License basically for integration in XFree86 codebase, and removing + confusion around the previous dual-licensing + - added Python bindings, beta software but should already be quite + complete + - a large number of fixes and cleanups, especially for all tree + manipulations + - cleanup of the headers, generation of a reference API definition in + XML + + +2.4.13: Jan 14 2002: + - update of the documentation: John Fleck and Charlie Bozeman + - cleanup of timing code from Justin Fletcher + - fixes for Windows and initial thread support on Win32: Igor and Serguei + Narojnyi + - Cygwin patch from Robert Collins + - added xmlSetEntityReferenceFunc() for Keith Isdale work on xsldbg + + +2.4.12: Dec 7 2001: + - a few bug fixes: thread (Gary Pennington), xmllint (Geert Kloosterman), + XML parser (Robin Berjon), XPointer (Danny Jamshy), I/O cleanups + (robert) + - Eric Lavigne contributed project files for MacOS + - some makefiles cleanups + + +2.4.11: Nov 26 2001: + - fixed a couple of errors in the includes, fixed a few bugs, some code + cleanups + - xmllint man pages improvement by Heiko Rupp + - updated VMS build instructions from John A Fotheringham + - Windows Makefiles updates from Igor + + +2.4.10: Nov 10 2001: + - URI escaping fix (Joel Young) + - added xmlGetNodePath() (for paths or XPointers generation) + - Fixes namespace handling problems when using DTD and validation + - improvements on xmllint: Morus Walter patches for --format and + --encode, Stefan Kost and Heiko Rupp improvements on the --shell + - fixes for xmlcatalog linking pointed by Weiqi Gao + - fixes to the HTML parser + + +2.4.9: Nov 6 2001: + - fixes more catalog bugs + - avoid a compilation problem, improve xmlGetLineNo() + + +2.4.8: Nov 4 2001: + - fixed SGML catalogs broken in previous release, updated xmlcatalog + tool + - fixed a compile errors and some includes troubles. + + +2.4.7: Oct 30 2001: + - exported some debugging interfaces + - serious rewrite of the catalog code + - integrated Gary Pennington thread safety patch, added configure option + and regression tests + - removed an HTML parser bug + - fixed a couple of potentially serious validation bugs + - integrated the SGML DocBook support in xmllint + - changed the nanoftp anonymous login passwd + - some I/O cleanup and a couple of interfaces for Perl wrapper + - general bug fixes + - updated xmllint man page by John Fleck + - some VMS and Windows updates + + +2.4.6: Oct 10 2001: + - added an updated man pages by John Fleck + - portability and configure fixes + - an infinite loop on the HTML parser was removed (William) + - Windows makefile patches from Igor + - fixed half a dozen bugs reported for libxml or libxslt + - updated xmlcatalog to be able to modify SGML super catalogs + + +2.4.5: Sep 14 2001: + - Remove a few annoying bugs in 2.4.4 + - forces the HTML serializer to output decimal charrefs since some + version of Netscape can't handle hexadecimal ones + + +1.8.16: Sep 14 2001: + - maintenance release of the old libxml1 branch, couple of bug and + portability fixes + + +2.4.4: Sep 12 2001: + - added --convert to xmlcatalog, bug fixes and cleanups of XML + Catalog + - a few bug fixes and some portability changes + - some documentation cleanups + + +2.4.3: Aug 23 2001: + - XML Catalog support see the doc + - New NaN/Infinity floating point code + - A few bug fixes + + +2.4.2: Aug 15 2001: + - adds xmlLineNumbersDefault() to control line number generation + - lot of bug fixes + - the Microsoft MSC projects files should now be up to date + - inheritance of namespaces from DTD defaulted attributes + - fixes a serious potential security bug + - added a --format option to xmllint + + +2.4.1: July 24 2001: + - possibility to keep line numbers in the tree + - some computation NaN fixes + - extension of the XPath API + - cleanup for alpha and ia64 targets + - patch to allow saving through HTTP PUT or POST + + +2.4.0: July 10 2001: + - Fixed a few bugs in XPath, validation, and tree handling. + - Fixed XML Base implementation, added a couple of examples to the + regression tests + - A bit of cleanup + + +2.3.14: July 5 2001: + - fixed some entities problems and reduce memory requirement when + substituting them + - lots of improvements in the XPath queries interpreter can be + substantially faster + - Makefiles and configure cleanups + - Fixes to XPath variable eval, and compare on empty node set + - HTML tag closing bug fixed + - Fixed an URI reference computation problem when validating + + +2.3.13: June 28 2001: + - 2.3.12 configure.in was broken as well as the push mode XML parser + - a few more fixes for compilation on Windows MSC by Yon Derek + + +1.8.14: June 28 2001: + - Zbigniew Chyla gave a patch to use the old XML parser in push mode + - Small Makefile fix + + +2.3.12: June 26 2001: + - lots of cleanup + - a couple of validation fix + - fixed line number counting + - fixed serious problems in the XInclude processing + - added support for UTF8 BOM at beginning of entities + - fixed a strange gcc optimizer bugs in xpath handling of float, gcc-3.0 + miscompile uri.c (William), Thomas Leitner provided a fix for the + optimizer on Tru64 + - incorporated Yon Derek and Igor Zlatkovic fixes and improvements for + compilation on Windows MSC + - update of libxml-doc.el (Felix Natter) + - fixed 2 bugs in URI normalization code + + +2.3.11: June 17 2001: + - updates to trio, Makefiles and configure should fix some portability + problems (alpha) + - fixed some HTML serialization problems (pre, script, and block/inline + handling), added encoding aware APIs, cleanup of this code + - added xmlHasNsProp() + - implemented a specific PI for encoding support in the DocBook SGML + parser + - some XPath fixes (-Infinity, / as a function parameter and namespaces + node selection) + - fixed a performance problem and an error in the validation code + - fixed XInclude routine to implement the recursive behaviour + - fixed xmlFreeNode problem when libxml is included statically twice + - added --version to xmllint for bug reports + + +2.3.10: June 1 2001: + - fixed the SGML catalog support + - a number of reported bugs got fixed, in XPath, iconv detection, + XInclude processing + - XPath string function should now handle unicode correctly + + +2.3.9: May 19 2001: +Lots of bugfixes, and added a basic SGML catalog support: - HTML push bugfix #54891 and another patch from Jonas Borgström + - some serious speed optimization again + - some documentation cleanups + - trying to get better linking on Solaris (-R) + - XPath API cleanup from Thomas Broyer + - Validation bug fixed #54631, added a patch from Gary Pennington, fixed + xmlValidGetValidElements() + - Added an INSTALL file + - Attribute removal added to API: #54433 + - added a basic support for SGML catalogs + - fixed xmlKeepBlanksDefault(0) API + - bugfix in xmlNodeGetLang() + - fixed a small configure portability problem + - fixed an inversion of SYSTEM and PUBLIC identifier in HTML document + + +1.8.13: May 14 2001: + - bugfixes release of the old libxml1 branch used by Gnome + + +2.3.8: May 3 2001: + - Integrated an SGML DocBook parser for the Gnome project + - Fixed a few things in the HTML parser + - Fixed some XPath bugs raised by XSLT use, tried to fix the floating + point portability issue + - Speed improvement (8M/s for SAX, 3M/s for DOM, 1.5M/s for + DOM+validation using the XML REC as input and a 700MHz celeron). + - incorporated more Windows cleanup + - added xmlSaveFormatFile() + - fixed problems in copying nodes with entities references (gdome) + - removed some troubles surrounding the new validation module + + +2.3.7: April 22 2001: + - lots of small bug fixes, corrected XPointer + - Non deterministic content model validation support + - added xmlDocCopyNode for gdome2 + - revamped the way the HTML parser handles end of tags + - XPath: corrections of namespaces support and number formatting + - Windows: Igor Zlatkovic patches for MSC compilation + - HTML output fixes from P C Chow and William M. Brack + - Improved validation speed sensible for DocBook + - fixed a big bug with ID declared in external parsed entities + - portability fixes, update of Trio from Bjorn Reese + + +2.3.6: April 8 2001: + - Code cleanup using extreme gcc compiler warning options, found and + cleared half a dozen potential problem + - the Eazel team found an XML parser bug + - cleaned up the user of some of the string formatting function. used the + trio library code to provide the one needed when the platform is missing + them + - xpath: removed a memory leak and fixed the predicate evaluation + problem, extended the testsuite and cleaned up the result. XPointer seems + broken ... + + +2.3.5: Mar 23 2001: + - Biggest change is separate parsing and evaluation of XPath expressions, + there is some new APIs for this too + - included a number of bug fixes(XML push parser, 51876, notations, + 52299) + - Fixed some portability issues + + +2.3.4: Mar 10 2001: + - Fixed bugs #51860 and #51861 + - Added a global variable xmlDefaultBufferSize to allow default buffer + size to be application tunable. + - Some cleanup in the validation code, still a bug left and this part + should probably be rewritten to support ambiguous content model :-\ + - Fix a couple of serious bugs introduced or raised by changes in 2.3.3 + parser + - Fixed another bug in xmlNodeGetContent() + - Bjorn fixed XPath node collection and Number formatting + - Fixed a loop reported in the HTML parsing + - blank space are reported even if the Dtd content model proves that they + are formatting spaces, this is for XML conformance + + +2.3.3: Mar 1 2001: + - small change in XPath for XSLT + - documentation cleanups + - fix in validation by Gary Pennington + - serious parsing performances improvements + + +2.3.2: Feb 24 2001: + - chasing XPath bugs, found a bunch, completed some TODO + - fixed a Dtd parsing bug + - fixed a bug in xmlNodeGetContent + - ID/IDREF support partly rewritten by Gary Pennington + + +2.3.1: Feb 15 2001: + - some XPath and HTML bug fixes for XSLT + - small extension of the hash table interfaces for DOM gdome2 + implementation + - A few bug fixes + + +2.3.0: Feb 8 2001 (2.2.12 was on 25 Jan but I didn't kept track): + - Lots of XPath bug fixes + - Add a mode with Dtd lookup but without validation error reporting for + XSLT + - Add support for text node without escaping (XSLT) + - bug fixes for xmlCheckFilename + - validation code bug fixes from Gary Pennington + - Patch from Paul D. Smith correcting URI path normalization + - Patch to allow simultaneous install of libxml-devel and + libxml2-devel + - the example Makefile is now fixed + - added HTML to the RPM packages + - tree copying bugfixes + - updates to Windows makefiles + - optimization patch from Bjorn Reese + + +2.2.11: Jan 4 2001: + - bunch of bug fixes (memory I/O, xpath, ftp/http, ...) + - added htmlHandleOmittedElem() + - Applied Bjorn Reese's IPV6 first patch + - Applied Paul D. Smith patches for validation of XInclude results + - added XPointer xmlns() new scheme support + + +2.2.10: Nov 25 2000: + - Fix the Windows problems of 2.2.8 + - integrate OpenVMS patches + - better handling of some nasty HTML input + - Improved the XPointer implementation + - integrate a number of provided patches + + +2.2.9: Nov 25 2000: + - erroneous release :-( + + +2.2.8: Nov 13 2000: + - First version of XInclude + support + - Patch in conditional section handling + - updated MS compiler project + - fixed some XPath problems + - added an URI escaping function + - some other bug fixes + + +2.2.7: Oct 31 2000: + - added message redirection + - XPath improvements (thanks TOM !) + - xmlIOParseDTD() added + - various small fixes in the HTML, URI, HTTP and XPointer support + - some cleanup of the Makefile, autoconf and the distribution content + + +2.2.6: Oct 25 2000:: + - Added an hash table module, migrated a number of internal structure to + those + - Fixed a posteriori validation problems + - HTTP module cleanups + - HTML parser improvements (tag errors, script/style handling, attribute + normalization) + - coalescing of adjacent text nodes + - couple of XPath bug fixes, exported the internal API + + +2.2.5: Oct 15 2000:: + - XPointer implementation and testsuite + - Lot of XPath fixes, added variable and functions registration, more + tests + - Portability fixes, lots of enhancements toward an easy Windows build + and release + - Late validation fixes + - Integrated a lot of contributed patches + - added memory management docs + - a performance problem when using large buffer seems fixed + + +2.2.4: Oct 1 2000:: + - main XPath problem fixed + - Integrated portability patches for Windows + - Serious bug fixes on the URI and HTML code + + +2.2.3: Sep 17 2000: + - bug fixes + - cleanup of entity handling code + - overall review of all loops in the parsers, all sprintf usage has been + checked too + - Far better handling of larges Dtd. Validating against DocBook XML Dtd + works smoothly now. + + +1.8.10: Sep 6 2000: + - bug fix release for some Gnome projects + + +2.2.2: August 12 2000: + - mostly bug fixes + - started adding routines to access xml parser context options + + +2.2.1: July 21 2000: + - a purely bug fixes release + - fixed an encoding support problem when parsing from a memory block + - fixed a DOCTYPE parsing problem + - removed a bug in the function allowing to override the memory + allocation routines + + +2.2.0: July 14 2000: + - applied a lot of portability fixes + - better encoding support/cleanup and saving (content is now always + encoded in UTF-8) + - the HTML parser now correctly handles encodings + - added xmlHasProp() + - fixed a serious problem with & + - propagated the fix to FTP client + - cleanup, bugfixes, etc ... + - Added a page about libxml Internationalization + support + + +1.8.9: July 9 2000: + - fixed the spec the RPMs should be better + - fixed a serious bug in the FTP implementation, released 1.8.9 to solve + rpmfind users problem + + +2.1.1: July 1 2000: + - fixes a couple of bugs in the 2.1.0 packaging + - improvements on the HTML parser + + +2.1.0 and 1.8.8: June 29 2000: + - 1.8.8 is mostly a commodity package for upgrading to libxml2 according + to new instructions. It fixes a nasty problem + about & charref parsing + - 2.1.0 also ease the upgrade from libxml v1 to the recent version. it + also contains numerous fixes and enhancements: + added xmlStopParser() to stop parsing + improved a lot parsing speed when there is large CDATA blocs + includes XPath patches provided by Picdar Technology + tried to fix as much as possible DTD validation and namespace + related problems + output to a given encoding has been added/tested + lot of various fixes + + - added xmlStopParser() to stop parsing + - improved a lot parsing speed when there is large CDATA blocs + - includes XPath patches provided by Picdar Technology + - tried to fix as much as possible DTD validation and namespace + related problems + - output to a given encoding has been added/tested + - lot of various fixes + + +2.0.0: Apr 12 2000: + - First public release of libxml2. If you are using libxml, it's a good + idea to check the 1.x to 2.x upgrade instructions. NOTE: while initially + scheduled for Apr 3 the release occurred only on Apr 12 due to massive + workload. + - The include are now located under $prefix/include/libxml (instead of + $prefix/include/gnome-xml), they also are referenced by + #include <libxml/xxx.h> + instead of + #include "xxx.h" + + - a new URI module for parsing URIs and following strictly RFC 2396 + - the memory allocation routines used by libxml can now be overloaded + dynamically by using xmlMemSetup() + - The previously CVS only tool tester has been renamed + xmllint and is now installed as part of the libxml2 + package + - The I/O interface has been revamped. There is now ways to plug in + specific I/O modules, either at the URI scheme detection level using + xmlRegisterInputCallbacks() or by passing I/O functions when creating a + parser context using xmlCreateIOParserCtxt() + - there is a C preprocessor macro LIBXML_VERSION providing the version + number of the libxml module in use + - a number of optional features of libxml can now be excluded at + configure time (FTP/HTTP/HTML/XPath/Debug) + + +2.0.0beta: Mar 14 2000: + - This is a first Beta release of libxml version 2 + - It's available only fromxmlsoft.org + FTP, it's packaged as libxml2-2.0.0beta and available as tar and + RPMs + - This version is now the head in the Gnome CVS base, the old one is + available under the tag LIB_XML_1_X + - This includes a very large set of changes. From a programmatic point + of view applications should not have to be modified too much, check the + upgrade page + - Some interfaces may changes (especially a bit about encoding). + - the updates includes: + fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly + handled now + Better handling of entities, especially well-formedness checking + and proper PEref extensions in external subsets + DTD conditional sections + Validation now correctly handle entities content + change + structures to accommodate DOM + + - fix I18N support. ISO-Latin-x/UTF-8/UTF-16 (nearly) seems correctly + handled now + - Better handling of entities, especially well-formedness checking + and proper PEref extensions in external subsets + - DTD conditional sections + - Validation now correctly handle entities content + - change + structures to accommodate DOM + - Serious progress were made toward compliance, here are the result of the test against the + OASIS testsuite (except the Japanese tests since I don't support that + encoding yet). This URL is rebuilt every couple of hours using the CVS + head version. + + +1.8.7: Mar 6 2000: + - This is a bug fix release: + - It is possible to disable the ignorable blanks heuristic used by + libxml-1.x, a new function xmlKeepBlanksDefault(0) will allow this. Note + that for adherence to XML spec, this behaviour will be disabled by + default in 2.x . The same function will allow to keep compatibility for + old code. + - Blanks in <a> </a> constructs are not ignored anymore, + avoiding heuristic is really the Right Way :-\ + - The unchecked use of snprintf which was breaking libxml-1.8.6 + compilation on some platforms has been fixed + - nanoftp.c nanohttp.c: Fixed '#' and '?' stripping when processing + URIs + + +1.8.6: Jan 31 2000: + - added a nanoFTP transport module, debugged until the new version of rpmfind can use + it without troubles + + +1.8.5: Jan 21 2000: + - adding APIs to parse a well balanced chunk of XML (production [43] content of the + XML spec) + - fixed a hideous bug in xmlGetProp pointed by Rune.Djurhuus@fast.no + - Jody Goldberg <jgoldberg@home.com> provided another patch trying + to solve the zlib checks problems + - The current state in gnome CVS base is expected to ship as 1.8.5 with + gnumeric soon + + +1.8.4: Jan 13 2000: + - bug fixes, reintroduced xmlNewGlobalNs(), fixed xmlNewNs() + - all exit() call should have been removed from libxml + - fixed a problem with INCLUDE_WINSOCK on WIN32 platform + - added newDocFragment() + + +1.8.3: Jan 5 2000: + - a Push interface for the XML and HTML parsers + - a shell-like interface to the document tree (try tester --shell :-) + - lots of bug fixes and improvement added over XMas holidays + - fixed the DTD parsing code to work with the xhtml DTD + - added xmlRemoveProp(), xmlRemoveID() and xmlRemoveRef() + - Fixed bugs in xmlNewNs() + - External entity loading code has been revamped, now it uses + xmlLoadExternalEntity(), some fix on entities processing were added + - cleaned up WIN32 includes of socket stuff + + +1.8.2: Dec 21 1999: + - I got another problem with includes and C++, I hope this issue is fixed + for good this time + - Added a few tree modification functions: xmlReplaceNode, + xmlAddPrevSibling, xmlAddNextSibling, xmlNodeSetName and + xmlDocSetRootElement + - Tried to improve the HTML output with help from Chris Lahey + + +1.8.1: Dec 18 1999: + - various patches to avoid troubles when using libxml with C++ compilers + the "namespace" keyword and C escaping in include files + - a problem in one of the core macros IS_CHAR was corrected + - fixed a bug introduced in 1.8.0 breaking default namespace processing, + and more specifically the Dia application + - fixed a posteriori validation (validation after parsing, or by using a + Dtd not specified in the original document) + - fixed a bug in + + +1.8.0: Dec 12 1999: + - cleanup, especially memory wise + - the parser should be more reliable, especially the HTML one, it should + not crash, whatever the input ! + - Integrated various patches, especially a speedup improvement for large + dataset from Carl Nygard, + configure with --with-buffers to enable them. + - attribute normalization, oops should have been added long ago ! + - attributes defaulted from DTDs should be available, xmlSetProp() now + does entities escaping by default. + + +1.7.4: Oct 25 1999: + - Lots of HTML improvement + - Fixed some errors when saving both XML and HTML + - More examples, the regression tests should now look clean + - Fixed a bug with contiguous charref + + +1.7.3: Sep 29 1999: + - portability problems fixed + - snprintf was used unconditionally, leading to link problems on system + were it's not available, fixed + + +1.7.1: Sep 24 1999: + - The basic type for strings manipulated by libxml has been renamed in + 1.7.1 from CHAR to xmlChar. The reason + is that CHAR was conflicting with a predefined type on Windows. However + on non WIN32 environment, compatibility is provided by the way of a + #define . + - Changed another error : the use of a structure field called errno, and + leading to troubles on platforms where it's a macro + + +1.7.0: Sep 23 1999: + - Added the ability to fetch remote DTD or parsed entities, see the nanohttp module. + - Added an errno to report errors by another mean than a simple printf + like callback + - Finished ID/IDREF support and checking when validation + - Serious memory leaks fixed (there is now a memory wrapper module) + - Improvement of XPath + implementation + - Added an HTML parser front-end + +Daniel Veillard at +bugs.html
diff --git a/libxml2-2.7.7/README b/libxml2-2.7.7/README new file mode 100644 index 0000000..f1817aa --- /dev/null +++ b/libxml2-2.7.7/README
@@ -0,0 +1,39 @@ + + XML toolkit from the GNOME project + +Full documentation is available on-line at + http://xmlsoft.org/ + +This code is released under the MIT Licence see the Copyright file. + +To build on an Unixised setup: + ./configure ; make ; make install +To build on Windows: + see instructions on win32/Readme.txt + +To assert build quality: + on an Unixised setup: + run make tests + otherwise: + There is 3 standalone tools runtest.c runsuite.c testapi.c, which + should compile as part of the build or as any application would. + Launch them from this directory to get results, runtest checks + the proper functionning of libxml2 main APIs while testapi does + a full coverage check. Report failures to the list. + +To report bugs, follow the instructions at: + http://xmlsoft.org/bugs.html + +A mailing-list xml@gnome.org is available, to subscribe: + http://mail.gnome.org/mailman/listinfo/xml + +The list archive is at: + http://mail.gnome.org/archives/xml/ + +All technical answers asked privately will be automatically answered on +the list and archived for public access unless pricacy is explicitely +required and justified. + +Daniel Veillard + +$Id$
diff --git a/libxml2-2.7.7/README.tests b/libxml2-2.7.7/README.tests new file mode 100644 index 0000000..66522ab --- /dev/null +++ b/libxml2-2.7.7/README.tests
@@ -0,0 +1,30 @@ + README.tests + + Instructions for standalone test regressions of libxml2 + +libxml2-tests-$version.tar.gz contains 3 standalone C programs as well +as a large amount of tests and results coming from libxml2 itself and +from W3C, NIST, Sun Microsystems, Microsoft and James Clark. Each C +program has a different testing purpose: + + runtest.c : runs libxml2 basic internal regression tests + runsuite.c: runs libxml2 against external regression tests + testapi.c : exercises the library public entry points + testchar.c: exercise the check of character ranges and UTF-8 validation + +The command: + + make -f Makefile.tests check + +should be sufficient on an Unix system to build and exercise the tests +for the version of the library installed on the system. Note however +that there isn't backward compatibility provided so if the installed +version is older to the testsuite one, failing to compile or run the tests +is likely. In any event this won't work with an installed libxml2 older +than 2.6.20. +Building on other platfroms should be a matter of compiling the C files +like any other program using libxml2, running the test should be done +simply by launching the resulting executables. + +Daniel Veillard +Thu Jul 24 2008
diff --git a/libxml2-2.7.7/SAX.c b/libxml2-2.7.7/SAX.c new file mode 100644 index 0000000..8e5d460 --- /dev/null +++ b/libxml2-2.7.7/SAX.c
@@ -0,0 +1,180 @@ +/* + * SAX.c : Old SAX v1 handlers to build a tree. + * Deprecated except for compatibility + * + * See Copyright for the status of this software. + * + * Daniel Veillard <daniel@veillard.com> + */ + + +#define IN_LIBXML +#include "libxml.h" +#include <stdlib.h> +#include <string.h> +#include <libxml/xmlmemory.h> +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/parserInternals.h> +#include <libxml/valid.h> +#include <libxml/entities.h> +#include <libxml/xmlerror.h> +#include <libxml/debugXML.h> +#include <libxml/xmlIO.h> +#include <libxml/SAX.h> +#include <libxml/uri.h> +#include <libxml/valid.h> +#include <libxml/HTMLtree.h> +#include <libxml/globals.h> +#include <libxml/SAX2.h> + +#ifdef LIBXML_LEGACY_ENABLED +#ifdef LIBXML_SAX1_ENABLED +/** + * initxmlDefaultSAXHandler: + * @hdlr: the SAX handler + * @warning: flag if non-zero sets the handler warning procedure + * + * Initialize the default XML SAX version 1 handler + * DEPRECATED: use xmlSAX2InitDefaultSAXHandler() for the new SAX2 blocks + */ +void +initxmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr, int warning) +{ + + if(hdlr->initialized == 1) + return; + + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = xmlSAX2ExternalSubset; + hdlr->isStandalone = xmlSAX2IsStandalone; + hdlr->hasInternalSubset = xmlSAX2HasInternalSubset; + hdlr->hasExternalSubset = xmlSAX2HasExternalSubset; + hdlr->resolveEntity = xmlSAX2ResolveEntity; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = xmlSAX2GetParameterEntity; + hdlr->entityDecl = xmlSAX2EntityDecl; + hdlr->attributeDecl = xmlSAX2AttributeDecl; + hdlr->elementDecl = xmlSAX2ElementDecl; + hdlr->notationDecl = xmlSAX2NotationDecl; + hdlr->unparsedEntityDecl = xmlSAX2UnparsedEntityDecl; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->reference = xmlSAX2Reference; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = xmlSAX2CDataBlock; + hdlr->ignorableWhitespace = xmlSAX2Characters; + hdlr->processingInstruction = xmlSAX2ProcessingInstruction; + if (warning == 0) + hdlr->warning = NULL; + else + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + hdlr->initialized = 1; +} + +#ifdef LIBXML_HTML_ENABLED + +/** + * inithtmlDefaultSAXHandler: + * @hdlr: the SAX handler + * + * Initialize the default HTML SAX version 1 handler + * DEPRECATED: use xmlSAX2InitHtmlDefaultSAXHandler() for the new SAX2 blocks + */ +void +inithtmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr) +{ + if(hdlr->initialized == 1) + return; + + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = NULL; + hdlr->isStandalone = NULL; + hdlr->hasInternalSubset = NULL; + hdlr->hasExternalSubset = NULL; + hdlr->resolveEntity = NULL; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = NULL; + hdlr->entityDecl = NULL; + hdlr->attributeDecl = NULL; + hdlr->elementDecl = NULL; + hdlr->notationDecl = NULL; + hdlr->unparsedEntityDecl = NULL; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->reference = NULL; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = xmlSAX2CDataBlock; + hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + hdlr->processingInstruction = xmlSAX2ProcessingInstruction; + hdlr->comment = xmlSAX2Comment; + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + hdlr->initialized = 1; +} + +#endif /* LIBXML_HTML_ENABLED */ + +#ifdef LIBXML_DOCB_ENABLED +/** + * initdocbDefaultSAXHandler: + * @hdlr: the SAX handler + * + * Initialize the default DocBook SAX version 1 handler + * DEPRECATED: use xmlSAX2InitDocbDefaultSAXHandler() for the new SAX2 blocks + */ +void +initdocbDefaultSAXHandler(xmlSAXHandlerV1 *hdlr) +{ + if(hdlr->initialized == 1) + return; + + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = NULL; + hdlr->isStandalone = xmlSAX2IsStandalone; + hdlr->hasInternalSubset = xmlSAX2HasInternalSubset; + hdlr->hasExternalSubset = xmlSAX2HasExternalSubset; + hdlr->resolveEntity = xmlSAX2ResolveEntity; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = NULL; + hdlr->entityDecl = xmlSAX2EntityDecl; + hdlr->attributeDecl = NULL; + hdlr->elementDecl = NULL; + hdlr->notationDecl = NULL; + hdlr->unparsedEntityDecl = NULL; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->reference = xmlSAX2Reference; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = NULL; + hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + hdlr->processingInstruction = NULL; + hdlr->comment = xmlSAX2Comment; + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + hdlr->initialized = 1; +} + +#endif /* LIBXML_DOCB_ENABLED */ + +#endif /* LIBXML_SAX1_ENABLED */ + +#define bottom_SAX +#include "elfgcchack.h" +#endif /* LIBXML_LEGACY_ENABLED */
diff --git a/libxml2-2.7.7/SAX2.c b/libxml2-2.7.7/SAX2.c new file mode 100644 index 0000000..84c1f00 --- /dev/null +++ b/libxml2-2.7.7/SAX2.c
@@ -0,0 +1,2945 @@ +/* + * SAX2.c : Default SAX2 handler to build a tree. + * + * See Copyright for the status of this software. + * + * Daniel Veillard <daniel@veillard.com> + */ + + +#define IN_LIBXML +#include "libxml.h" +#include <stdlib.h> +#include <string.h> +#include <limits.h> +#include <libxml/xmlmemory.h> +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/parserInternals.h> +#include <libxml/valid.h> +#include <libxml/entities.h> +#include <libxml/xmlerror.h> +#include <libxml/debugXML.h> +#include <libxml/xmlIO.h> +#include <libxml/SAX.h> +#include <libxml/uri.h> +#include <libxml/valid.h> +#include <libxml/HTMLtree.h> +#include <libxml/globals.h> + +/* Define SIZE_T_MAX unless defined through <limits.h>. */ +#ifndef SIZE_T_MAX +# define SIZE_T_MAX ((size_t)-1) +#endif /* !SIZE_T_MAX */ + +/* #define DEBUG_SAX2 */ +/* #define DEBUG_SAX2_TREE */ + +/** + * TODO: + * + * macro to flag unimplemented blocks + * XML_CATALOG_PREFER user env to select between system/public prefered + * option. C.f. Richard Tobin <richard@cogsci.ed.ac.uk> + *> Just FYI, I am using an environment variable XML_CATALOG_PREFER with + *> values "system" and "public". I have made the default be "system" to + *> match yours. + */ +#define TODO \ + xmlGenericError(xmlGenericErrorContext, \ + "Unimplemented block at %s:%d\n", \ + __FILE__, __LINE__); + +/* + * xmlSAX2ErrMemory: + * @ctxt: an XML validation parser context + * @msg: a string to accompany the error message + */ +static void +xmlSAX2ErrMemory(xmlParserCtxtPtr ctxt, const char *msg) { + if (ctxt != NULL) { + if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) + ctxt->sax->error(ctxt->userData, "%s: out of memory\n", msg); + ctxt->errNo = XML_ERR_NO_MEMORY; + ctxt->instate = XML_PARSER_EOF; + ctxt->disableSAX = 1; + } +} + +/** + * xmlValidError: + * @ctxt: an XML validation parser context + * @error: the error number + * @msg: the error message + * @str1: extra data + * @str2: extra data + * + * Handle a validation error + */ +static void +xmlErrValid(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const char *str1, const char *str2) +{ + xmlStructuredErrorFunc schannel = NULL; + + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) { + ctxt->errNo = error; + if ((ctxt->sax != NULL) && (ctxt->sax->initialized == XML_SAX2_MAGIC)) + schannel = ctxt->sax->serror; + __xmlRaiseError(schannel, + ctxt->vctxt.error, ctxt->vctxt.userData, + ctxt, NULL, XML_FROM_DTD, error, + XML_ERR_ERROR, NULL, 0, (const char *) str1, + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); + ctxt->valid = 0; + } else { + __xmlRaiseError(schannel, + NULL, NULL, + ctxt, NULL, XML_FROM_DTD, error, + XML_ERR_ERROR, NULL, 0, (const char *) str1, + (const char *) str2, NULL, 0, 0, + msg, (const char *) str1, (const char *) str2); + } +} + +/** + * xmlFatalErrMsg: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * @str1: an error string + * @str2: an error string + * + * Handle a fatal parser error, i.e. violating Well-Formedness constraints + */ +static void +xmlFatalErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const xmlChar *str1, const xmlChar *str2) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, + XML_ERR_FATAL, NULL, 0, + (const char *) str1, (const char *) str2, + NULL, 0, 0, msg, str1, str2); + if (ctxt != NULL) { + ctxt->wellFormed = 0; + ctxt->valid = 0; + if (ctxt->recovery == 0) + ctxt->disableSAX = 1; + } +} + +/** + * xmlWarnMsg: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * @str1: an error string + * @str2: an error string + * + * Handle a parser warning + */ +static void +xmlWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const xmlChar *str1) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_PARSER, error, + XML_ERR_WARNING, NULL, 0, + (const char *) str1, NULL, + NULL, 0, 0, msg, str1); +} + +/** + * xmlNsErrMsg: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * @str1: an error string + * @str2: an error string + * + * Handle a namespace error + */ +static void +xmlNsErrMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const xmlChar *str1, const xmlChar *str2) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error, + XML_ERR_ERROR, NULL, 0, + (const char *) str1, (const char *) str2, + NULL, 0, 0, msg, str1, str2); +} + +/** + * xmlNsWarnMsg: + * @ctxt: an XML parser context + * @error: the error number + * @msg: the error message + * @str1: an error string + * + * Handle a namespace warning + */ +static void +xmlNsWarnMsg(xmlParserCtxtPtr ctxt, xmlParserErrors error, + const char *msg, const xmlChar *str1, const xmlChar *str2) +{ + if ((ctxt != NULL) && (ctxt->disableSAX != 0) && + (ctxt->instate == XML_PARSER_EOF)) + return; + if (ctxt != NULL) + ctxt->errNo = error; + __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error, + XML_ERR_WARNING, NULL, 0, + (const char *) str1, (const char *) str2, + NULL, 0, 0, msg, str1, str2); +} + +/** + * xmlSAX2GetPublicId: + * @ctx: the user data (XML parser context) + * + * Provides the public ID e.g. "-//SGMLSOURCE//DTD DEMO//EN" + * + * Returns a xmlChar * + */ +const xmlChar * +xmlSAX2GetPublicId(void *ctx ATTRIBUTE_UNUSED) +{ + /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */ + return(NULL); +} + +/** + * xmlSAX2GetSystemId: + * @ctx: the user data (XML parser context) + * + * Provides the system ID, basically URL or filename e.g. + * http://www.sgmlsource.com/dtds/memo.dtd + * + * Returns a xmlChar * + */ +const xmlChar * +xmlSAX2GetSystemId(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctx == NULL) || (ctxt->input == NULL)) return(NULL); + return((const xmlChar *) ctxt->input->filename); +} + +/** + * xmlSAX2GetLineNumber: + * @ctx: the user data (XML parser context) + * + * Provide the line number of the current parsing point. + * + * Returns an int + */ +int +xmlSAX2GetLineNumber(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctx == NULL) || (ctxt->input == NULL)) return(0); + return(ctxt->input->line); +} + +/** + * xmlSAX2GetColumnNumber: + * @ctx: the user data (XML parser context) + * + * Provide the column number of the current parsing point. + * + * Returns an int + */ +int +xmlSAX2GetColumnNumber(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctx == NULL) || (ctxt->input == NULL)) return(0); + return(ctxt->input->col); +} + +/** + * xmlSAX2IsStandalone: + * @ctx: the user data (XML parser context) + * + * Is this document tagged standalone ? + * + * Returns 1 if true + */ +int +xmlSAX2IsStandalone(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctx == NULL) || (ctxt->myDoc == NULL)) return(0); + return(ctxt->myDoc->standalone == 1); +} + +/** + * xmlSAX2HasInternalSubset: + * @ctx: the user data (XML parser context) + * + * Does this document has an internal subset + * + * Returns 1 if true + */ +int +xmlSAX2HasInternalSubset(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctxt == NULL) || (ctxt->myDoc == NULL)) return(0); + return(ctxt->myDoc->intSubset != NULL); +} + +/** + * xmlSAX2HasExternalSubset: + * @ctx: the user data (XML parser context) + * + * Does this document has an external subset + * + * Returns 1 if true + */ +int +xmlSAX2HasExternalSubset(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if ((ctxt == NULL) || (ctxt->myDoc == NULL)) return(0); + return(ctxt->myDoc->extSubset != NULL); +} + +/** + * xmlSAX2InternalSubset: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on internal subset declaration. + */ +void +xmlSAX2InternalSubset(void *ctx, const xmlChar *name, + const xmlChar *ExternalID, const xmlChar *SystemID) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlDtdPtr dtd; + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2InternalSubset(%s, %s, %s)\n", + name, ExternalID, SystemID); +#endif + + if (ctxt->myDoc == NULL) + return; + dtd = xmlGetIntSubset(ctxt->myDoc); + if (dtd != NULL) { + if (ctxt->html) + return; + xmlUnlinkNode((xmlNodePtr) dtd); + xmlFreeDtd(dtd); + ctxt->myDoc->intSubset = NULL; + } + ctxt->myDoc->intSubset = + xmlCreateIntSubset(ctxt->myDoc, name, ExternalID, SystemID); + if (ctxt->myDoc->intSubset == NULL) + xmlSAX2ErrMemory(ctxt, "xmlSAX2InternalSubset"); +} + +/** + * xmlSAX2ExternalSubset: + * @ctx: the user data (XML parser context) + * @name: the root element name + * @ExternalID: the external ID + * @SystemID: the SYSTEM ID (e.g. filename or URL) + * + * Callback on external subset declaration. + */ +void +xmlSAX2ExternalSubset(void *ctx, const xmlChar *name, + const xmlChar *ExternalID, const xmlChar *SystemID) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2ExternalSubset(%s, %s, %s)\n", + name, ExternalID, SystemID); +#endif + if (((ExternalID != NULL) || (SystemID != NULL)) && + (((ctxt->validate) || (ctxt->loadsubset != 0)) && + (ctxt->wellFormed && ctxt->myDoc))) { + /* + * Try to fetch and parse the external subset. + */ + xmlParserInputPtr oldinput; + int oldinputNr; + int oldinputMax; + xmlParserInputPtr *oldinputTab; + xmlParserInputPtr input = NULL; + xmlCharEncoding enc; + int oldcharset; + + /* + * Ask the Entity resolver to load the damn thing + */ + if ((ctxt->sax != NULL) && (ctxt->sax->resolveEntity != NULL)) + input = ctxt->sax->resolveEntity(ctxt->userData, ExternalID, + SystemID); + if (input == NULL) { + return; + } + + xmlNewDtd(ctxt->myDoc, name, ExternalID, SystemID); + + /* + * make sure we won't destroy the main document context + */ + oldinput = ctxt->input; + oldinputNr = ctxt->inputNr; + oldinputMax = ctxt->inputMax; + oldinputTab = ctxt->inputTab; + oldcharset = ctxt->charset; + + ctxt->inputTab = (xmlParserInputPtr *) + xmlMalloc(5 * sizeof(xmlParserInputPtr)); + if (ctxt->inputTab == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2ExternalSubset"); + ctxt->input = oldinput; + ctxt->inputNr = oldinputNr; + ctxt->inputMax = oldinputMax; + ctxt->inputTab = oldinputTab; + ctxt->charset = oldcharset; + return; + } + ctxt->inputNr = 0; + ctxt->inputMax = 5; + ctxt->input = NULL; + xmlPushInput(ctxt, input); + + /* + * On the fly encoding conversion if needed + */ + if (ctxt->input->length >= 4) { + enc = xmlDetectCharEncoding(ctxt->input->cur, 4); + xmlSwitchEncoding(ctxt, enc); + } + + if (input->filename == NULL) + input->filename = (char *) xmlCanonicPath(SystemID); + input->line = 1; + input->col = 1; + input->base = ctxt->input->cur; + input->cur = ctxt->input->cur; + input->free = NULL; + + /* + * let's parse that entity knowing it's an external subset. + */ + xmlParseExternalSubset(ctxt, ExternalID, SystemID); + + /* + * Free up the external entities + */ + + while (ctxt->inputNr > 1) + xmlPopInput(ctxt); + xmlFreeInputStream(ctxt->input); + xmlFree(ctxt->inputTab); + + /* + * Restore the parsing context of the main entity + */ + ctxt->input = oldinput; + ctxt->inputNr = oldinputNr; + ctxt->inputMax = oldinputMax; + ctxt->inputTab = oldinputTab; + ctxt->charset = oldcharset; + /* ctxt->wellFormed = oldwellFormed; */ + } +} + +/** + * xmlSAX2ResolveEntity: + * @ctx: the user data (XML parser context) + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * The entity loader, to control the loading of external entities, + * the application can either: + * - override this xmlSAX2ResolveEntity() callback in the SAX block + * - or better use the xmlSetExternalEntityLoader() function to + * set up it's own entity resolution routine + * + * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour. + */ +xmlParserInputPtr +xmlSAX2ResolveEntity(void *ctx, const xmlChar *publicId, const xmlChar *systemId) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlParserInputPtr ret; + xmlChar *URI; + const char *base = NULL; + + if (ctx == NULL) return(NULL); + if (ctxt->input != NULL) + base = ctxt->input->filename; + if (base == NULL) + base = ctxt->directory; + + URI = xmlBuildURI(systemId, (const xmlChar *) base); + +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2ResolveEntity(%s, %s)\n", publicId, systemId); +#endif + + ret = xmlLoadExternalEntity((const char *) URI, + (const char *) publicId, ctxt); + if (URI != NULL) + xmlFree(URI); + return(ret); +} + +/** + * xmlSAX2GetEntity: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get an entity by name + * + * Returns the xmlEntityPtr if found. + */ +xmlEntityPtr +xmlSAX2GetEntity(void *ctx, const xmlChar *name) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlEntityPtr ret = NULL; + + if (ctx == NULL) return(NULL); +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2GetEntity(%s)\n", name); +#endif + + if (ctxt->inSubset == 0) { + ret = xmlGetPredefinedEntity(name); + if (ret != NULL) + return(ret); + } + if ((ctxt->myDoc != NULL) && (ctxt->myDoc->standalone == 1)) { + if (ctxt->inSubset == 2) { + ctxt->myDoc->standalone = 0; + ret = xmlGetDocEntity(ctxt->myDoc, name); + ctxt->myDoc->standalone = 1; + } else { + ret = xmlGetDocEntity(ctxt->myDoc, name); + if (ret == NULL) { + ctxt->myDoc->standalone = 0; + ret = xmlGetDocEntity(ctxt->myDoc, name); + if (ret != NULL) { + xmlFatalErrMsg(ctxt, XML_ERR_NOT_STANDALONE, + "Entity(%s) document marked standalone but requires external subset\n", + name, NULL); + } + ctxt->myDoc->standalone = 1; + } + } + } else { + ret = xmlGetDocEntity(ctxt->myDoc, name); + } + if ((ret != NULL) && + ((ctxt->validate) || (ctxt->replaceEntities)) && + (ret->children == NULL) && + (ret->etype == XML_EXTERNAL_GENERAL_PARSED_ENTITY)) { + int val; + + /* + * for validation purposes we really need to fetch and + * parse the external entity + */ + xmlNodePtr children; + + val = xmlParseCtxtExternalEntity(ctxt, ret->URI, + ret->ExternalID, &children); + if (val == 0) { + xmlAddChildList((xmlNodePtr) ret, children); + } else { + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING, + "Failure to process entity %s\n", name, NULL); + ctxt->validate = 0; + return(NULL); + } + ret->owner = 1; + if (ret->checked == 0) + ret->checked = 1; + } + return(ret); +} + +/** + * xmlSAX2GetParameterEntity: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * Get a parameter entity by name + * + * Returns the xmlEntityPtr if found. + */ +xmlEntityPtr +xmlSAX2GetParameterEntity(void *ctx, const xmlChar *name) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlEntityPtr ret; + + if (ctx == NULL) return(NULL); +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2GetParameterEntity(%s)\n", name); +#endif + + ret = xmlGetParameterEntity(ctxt->myDoc, name); + return(ret); +} + + +/** + * xmlSAX2EntityDecl: + * @ctx: the user data (XML parser context) + * @name: the entity name + * @type: the entity type + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @content: the entity value (without processing). + * + * An entity definition has been parsed + */ +void +xmlSAX2EntityDecl(void *ctx, const xmlChar *name, int type, + const xmlChar *publicId, const xmlChar *systemId, xmlChar *content) +{ + xmlEntityPtr ent; + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2EntityDecl(%s, %d, %s, %s, %s)\n", + name, type, publicId, systemId, content); +#endif + if (ctxt->inSubset == 1) { + ent = xmlAddDocEntity(ctxt->myDoc, name, type, publicId, + systemId, content); + if ((ent == NULL) && (ctxt->pedantic)) + xmlWarnMsg(ctxt, XML_WAR_ENTITY_REDEFINED, + "Entity(%s) already defined in the internal subset\n", + name); + if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) { + xmlChar *URI; + const char *base = NULL; + + if (ctxt->input != NULL) + base = ctxt->input->filename; + if (base == NULL) + base = ctxt->directory; + + URI = xmlBuildURI(systemId, (const xmlChar *) base); + ent->URI = URI; + } + } else if (ctxt->inSubset == 2) { + ent = xmlAddDtdEntity(ctxt->myDoc, name, type, publicId, + systemId, content); + if ((ent == NULL) && (ctxt->pedantic) && + (ctxt->sax != NULL) && (ctxt->sax->warning != NULL)) + ctxt->sax->warning(ctxt->userData, + "Entity(%s) already defined in the external subset\n", name); + if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) { + xmlChar *URI; + const char *base = NULL; + + if (ctxt->input != NULL) + base = ctxt->input->filename; + if (base == NULL) + base = ctxt->directory; + + URI = xmlBuildURI(systemId, (const xmlChar *) base); + ent->URI = URI; + } + } else { + xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING, + "SAX.xmlSAX2EntityDecl(%s) called while not in subset\n", + name, NULL); + } +} + +/** + * xmlSAX2AttributeDecl: + * @ctx: the user data (XML parser context) + * @elem: the name of the element + * @fullname: the attribute name + * @type: the attribute type + * @def: the type of default value + * @defaultValue: the attribute default value + * @tree: the tree of enumerated value set + * + * An attribute definition has been parsed + */ +void +xmlSAX2AttributeDecl(void *ctx, const xmlChar *elem, const xmlChar *fullname, + int type, int def, const xmlChar *defaultValue, + xmlEnumerationPtr tree) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlAttributePtr attr; + xmlChar *name = NULL, *prefix = NULL; + + if ((ctxt == NULL) || (ctxt->myDoc == NULL)) + return; + +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2AttributeDecl(%s, %s, %d, %d, %s, ...)\n", + elem, fullname, type, def, defaultValue); +#endif + if ((xmlStrEqual(fullname, BAD_CAST "xml:id")) && + (type != XML_ATTRIBUTE_ID)) { + /* + * Raise the error but keep the validity flag + */ + int tmp = ctxt->valid; + xmlErrValid(ctxt, XML_DTD_XMLID_TYPE, + "xml:id : attribute type should be ID\n", NULL, NULL); + ctxt->valid = tmp; + } + /* TODO: optimize name/prefix allocation */ + name = xmlSplitQName(ctxt, fullname, &prefix); + ctxt->vctxt.valid = 1; + if (ctxt->inSubset == 1) + attr = xmlAddAttributeDecl(&ctxt->vctxt, ctxt->myDoc->intSubset, elem, + name, prefix, (xmlAttributeType) type, + (xmlAttributeDefault) def, defaultValue, tree); + else if (ctxt->inSubset == 2) + attr = xmlAddAttributeDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, elem, + name, prefix, (xmlAttributeType) type, + (xmlAttributeDefault) def, defaultValue, tree); + else { + xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, + "SAX.xmlSAX2AttributeDecl(%s) called while not in subset\n", + name, NULL); + xmlFreeEnumeration(tree); + return; + } +#ifdef LIBXML_VALID_ENABLED + if (ctxt->vctxt.valid == 0) + ctxt->valid = 0; + if ((attr != NULL) && (ctxt->validate) && (ctxt->wellFormed) && + (ctxt->myDoc->intSubset != NULL)) + ctxt->valid &= xmlValidateAttributeDecl(&ctxt->vctxt, ctxt->myDoc, + attr); +#endif /* LIBXML_VALID_ENABLED */ + if (prefix != NULL) + xmlFree(prefix); + if (name != NULL) + xmlFree(name); +} + +/** + * xmlSAX2ElementDecl: + * @ctx: the user data (XML parser context) + * @name: the element name + * @type: the element type + * @content: the element value tree + * + * An element definition has been parsed + */ +void +xmlSAX2ElementDecl(void *ctx, const xmlChar * name, int type, + xmlElementContentPtr content) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlElementPtr elem = NULL; + + if ((ctxt == NULL) || (ctxt->myDoc == NULL)) + return; + +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2ElementDecl(%s, %d, ...)\n", name, type); +#endif + + if (ctxt->inSubset == 1) + elem = xmlAddElementDecl(&ctxt->vctxt, ctxt->myDoc->intSubset, + name, (xmlElementTypeVal) type, content); + else if (ctxt->inSubset == 2) + elem = xmlAddElementDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, + name, (xmlElementTypeVal) type, content); + else { + xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, + "SAX.xmlSAX2ElementDecl(%s) called while not in subset\n", + name, NULL); + return; + } +#ifdef LIBXML_VALID_ENABLED + if (elem == NULL) + ctxt->valid = 0; + if (ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= + xmlValidateElementDecl(&ctxt->vctxt, ctxt->myDoc, elem); +#endif /* LIBXML_VALID_ENABLED */ +} + +/** + * xmlSAX2NotationDecl: + * @ctx: the user data (XML parser context) + * @name: The name of the notation + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * + * What to do when a notation declaration has been parsed. + */ +void +xmlSAX2NotationDecl(void *ctx, const xmlChar *name, + const xmlChar *publicId, const xmlChar *systemId) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNotationPtr nota = NULL; + + if ((ctxt == NULL) || (ctxt->myDoc == NULL)) + return; + +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2NotationDecl(%s, %s, %s)\n", name, publicId, systemId); +#endif + + if ((publicId == NULL) && (systemId == NULL)) { + xmlFatalErrMsg(ctxt, XML_ERR_NOTATION_PROCESSING, + "SAX.xmlSAX2NotationDecl(%s) externalID or PublicID missing\n", + name, NULL); + return; + } else if (ctxt->inSubset == 1) + nota = xmlAddNotationDecl(&ctxt->vctxt, ctxt->myDoc->intSubset, name, + publicId, systemId); + else if (ctxt->inSubset == 2) + nota = xmlAddNotationDecl(&ctxt->vctxt, ctxt->myDoc->extSubset, name, + publicId, systemId); + else { + xmlFatalErrMsg(ctxt, XML_ERR_NOTATION_PROCESSING, + "SAX.xmlSAX2NotationDecl(%s) called while not in subset\n", + name, NULL); + return; + } +#ifdef LIBXML_VALID_ENABLED + if (nota == NULL) ctxt->valid = 0; + if ((ctxt->validate) && (ctxt->wellFormed) && + (ctxt->myDoc->intSubset != NULL)) + ctxt->valid &= xmlValidateNotationDecl(&ctxt->vctxt, ctxt->myDoc, + nota); +#endif /* LIBXML_VALID_ENABLED */ +} + +/** + * xmlSAX2UnparsedEntityDecl: + * @ctx: the user data (XML parser context) + * @name: The name of the entity + * @publicId: The public ID of the entity + * @systemId: The system ID of the entity + * @notationName: the name of the notation + * + * What to do when an unparsed entity declaration is parsed + */ +void +xmlSAX2UnparsedEntityDecl(void *ctx, const xmlChar *name, + const xmlChar *publicId, const xmlChar *systemId, + const xmlChar *notationName) +{ + xmlEntityPtr ent; + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2UnparsedEntityDecl(%s, %s, %s, %s)\n", + name, publicId, systemId, notationName); +#endif + if (ctxt->inSubset == 1) { + ent = xmlAddDocEntity(ctxt->myDoc, name, + XML_EXTERNAL_GENERAL_UNPARSED_ENTITY, + publicId, systemId, notationName); + if ((ent == NULL) && (ctxt->pedantic) && + (ctxt->sax != NULL) && (ctxt->sax->warning != NULL)) + ctxt->sax->warning(ctxt->userData, + "Entity(%s) already defined in the internal subset\n", name); + if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) { + xmlChar *URI; + const char *base = NULL; + + if (ctxt->input != NULL) + base = ctxt->input->filename; + if (base == NULL) + base = ctxt->directory; + + URI = xmlBuildURI(systemId, (const xmlChar *) base); + ent->URI = URI; + } + } else if (ctxt->inSubset == 2) { + ent = xmlAddDtdEntity(ctxt->myDoc, name, + XML_EXTERNAL_GENERAL_UNPARSED_ENTITY, + publicId, systemId, notationName); + if ((ent == NULL) && (ctxt->pedantic) && + (ctxt->sax != NULL) && (ctxt->sax->warning != NULL)) + ctxt->sax->warning(ctxt->userData, + "Entity(%s) already defined in the external subset\n", name); + if ((ent != NULL) && (ent->URI == NULL) && (systemId != NULL)) { + xmlChar *URI; + const char *base = NULL; + + if (ctxt->input != NULL) + base = ctxt->input->filename; + if (base == NULL) + base = ctxt->directory; + + URI = xmlBuildURI(systemId, (const xmlChar *) base); + ent->URI = URI; + } + } else { + xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR, + "SAX.xmlSAX2UnparsedEntityDecl(%s) called while not in subset\n", + name, NULL); + } +} + +/** + * xmlSAX2SetDocumentLocator: + * @ctx: the user data (XML parser context) + * @loc: A SAX Locator + * + * Receive the document locator at startup, actually xmlDefaultSAXLocator + * Everything is available on the context, so this is useless in our case. + */ +void +xmlSAX2SetDocumentLocator(void *ctx ATTRIBUTE_UNUSED, xmlSAXLocatorPtr loc ATTRIBUTE_UNUSED) +{ + /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */ +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2SetDocumentLocator()\n"); +#endif +} + +/** + * xmlSAX2StartDocument: + * @ctx: the user data (XML parser context) + * + * called when the document start being processed. + */ +void +xmlSAX2StartDocument(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlDocPtr doc; + + if (ctx == NULL) return; + +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2StartDocument()\n"); +#endif + if (ctxt->html) { +#ifdef LIBXML_HTML_ENABLED + if (ctxt->myDoc == NULL) + ctxt->myDoc = htmlNewDocNoDtD(NULL, NULL); + ctxt->myDoc->properties = XML_DOC_HTML; + ctxt->myDoc->parseFlags = ctxt->options; + if (ctxt->myDoc == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument"); + return; + } +#else + xmlGenericError(xmlGenericErrorContext, + "libxml2 built without HTML support\n"); + ctxt->errNo = XML_ERR_INTERNAL_ERROR; + ctxt->instate = XML_PARSER_EOF; + ctxt->disableSAX = 1; + return; +#endif + } else { + doc = ctxt->myDoc = xmlNewDoc(ctxt->version); + if (doc != NULL) { + doc->properties = 0; + if (ctxt->options & XML_PARSE_OLD10) + doc->properties |= XML_DOC_OLD10; + doc->parseFlags = ctxt->options; + if (ctxt->encoding != NULL) + doc->encoding = xmlStrdup(ctxt->encoding); + else + doc->encoding = NULL; + doc->standalone = ctxt->standalone; + } else { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument"); + return; + } + if ((ctxt->dictNames) && (doc != NULL)) { + doc->dict = ctxt->dict; + xmlDictReference(doc->dict); + } + } + if ((ctxt->myDoc != NULL) && (ctxt->myDoc->URL == NULL) && + (ctxt->input != NULL) && (ctxt->input->filename != NULL)) { + ctxt->myDoc->URL = xmlPathToURI((const xmlChar *)ctxt->input->filename); + if (ctxt->myDoc->URL == NULL) + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument"); + } +} + +/** + * xmlSAX2EndDocument: + * @ctx: the user data (XML parser context) + * + * called when the document end has been detected. + */ +void +xmlSAX2EndDocument(void *ctx) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2EndDocument()\n"); +#endif + if (ctx == NULL) return; +#ifdef LIBXML_VALID_ENABLED + if (ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= xmlValidateDocumentFinal(&ctxt->vctxt, ctxt->myDoc); +#endif /* LIBXML_VALID_ENABLED */ + + /* + * Grab the encoding if it was added on-the-fly + */ + if ((ctxt->encoding != NULL) && (ctxt->myDoc != NULL) && + (ctxt->myDoc->encoding == NULL)) { + ctxt->myDoc->encoding = ctxt->encoding; + ctxt->encoding = NULL; + } + if ((ctxt->inputTab != NULL) && + (ctxt->inputNr > 0) && (ctxt->inputTab[0] != NULL) && + (ctxt->inputTab[0]->encoding != NULL) && (ctxt->myDoc != NULL) && + (ctxt->myDoc->encoding == NULL)) { + ctxt->myDoc->encoding = xmlStrdup(ctxt->inputTab[0]->encoding); + } + if ((ctxt->charset != XML_CHAR_ENCODING_NONE) && (ctxt->myDoc != NULL) && + (ctxt->myDoc->charset == XML_CHAR_ENCODING_NONE)) { + ctxt->myDoc->charset = ctxt->charset; + } +} + +#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED) +/** + * xmlSAX2AttributeInternal: + * @ctx: the user data (XML parser context) + * @fullname: The attribute name, including namespace prefix + * @value: The attribute value + * @prefix: the prefix on the element node + * + * Handle an attribute that has been read by the parser. + * The default handling is to convert the attribute into an + * DOM subtree and past it in a new xmlAttr element added to + * the element. + */ +static void +xmlSAX2AttributeInternal(void *ctx, const xmlChar *fullname, + const xmlChar *value, const xmlChar *prefix ATTRIBUTE_UNUSED) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlAttrPtr ret; + xmlChar *name; + xmlChar *ns; + xmlChar *nval; + xmlNsPtr namespace; + + if (ctxt->html) { + name = xmlStrdup(fullname); + ns = NULL; + namespace = NULL; + } else { + /* + * Split the full name into a namespace prefix and the tag name + */ + name = xmlSplitQName(ctxt, fullname, &ns); + if ((name != NULL) && (name[0] == 0)) { + if (xmlStrEqual(ns, BAD_CAST "xmlns")) { + xmlNsErrMsg(ctxt, XML_ERR_NS_DECL_ERROR, + "invalid namespace declaration '%s'\n", + fullname, NULL); + } else { + xmlNsWarnMsg(ctxt, XML_WAR_NS_COLUMN, + "Avoid attribute ending with ':' like '%s'\n", + fullname, NULL); + } + if (ns != NULL) + xmlFree(ns); + ns = NULL; + xmlFree(name); + name = xmlStrdup(fullname); + } + } + if (name == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); + if (ns != NULL) + xmlFree(ns); + return; + } + +#ifdef LIBXML_HTML_ENABLED + if ((ctxt->html) && + (value == NULL) && (htmlIsBooleanAttr(fullname))) { + nval = xmlStrdup(fullname); + value = (const xmlChar *) nval; + } else +#endif + { +#ifdef LIBXML_VALID_ENABLED + /* + * Do the last stage of the attribute normalization + * Needed for HTML too: + * http://www.w3.org/TR/html4/types.html#h-6.2 + */ + ctxt->vctxt.valid = 1; + nval = xmlValidCtxtNormalizeAttributeValue(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, + fullname, value); + if (ctxt->vctxt.valid != 1) { + ctxt->valid = 0; + } + if (nval != NULL) + value = nval; +#else + nval = NULL; +#endif /* LIBXML_VALID_ENABLED */ + } + + /* + * Check whether it's a namespace definition + */ + if ((!ctxt->html) && (ns == NULL) && + (name[0] == 'x') && (name[1] == 'm') && (name[2] == 'l') && + (name[3] == 'n') && (name[4] == 's') && (name[5] == 0)) { + xmlNsPtr nsret; + xmlChar *val; + + if (!ctxt->replaceEntities) { + ctxt->depth++; + val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF, + 0,0,0); + ctxt->depth--; + } else { + val = (xmlChar *) value; + } + + if (val[0] != 0) { + xmlURIPtr uri; + + uri = xmlParseURI((const char *)val); + if (uri == NULL) { + if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL)) + ctxt->sax->warning(ctxt->userData, + "xmlns: %s not a valid URI\n", val); + } else { + if (uri->scheme == NULL) { + if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL)) + ctxt->sax->warning(ctxt->userData, + "xmlns: URI %s is not absolute\n", val); + } + xmlFreeURI(uri); + } + } + + /* a default namespace definition */ + nsret = xmlNewNs(ctxt->node, val, NULL); + +#ifdef LIBXML_VALID_ENABLED + /* + * Validate also for namespace decls, they are attributes from + * an XML-1.0 perspective + */ + if (nsret != NULL && ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc, + ctxt->node, prefix, nsret, val); +#endif /* LIBXML_VALID_ENABLED */ + if (name != NULL) + xmlFree(name); + if (nval != NULL) + xmlFree(nval); + if (val != value) + xmlFree(val); + return; + } + if ((!ctxt->html) && + (ns != NULL) && (ns[0] == 'x') && (ns[1] == 'm') && (ns[2] == 'l') && + (ns[3] == 'n') && (ns[4] == 's') && (ns[5] == 0)) { + xmlNsPtr nsret; + xmlChar *val; + + if (!ctxt->replaceEntities) { + ctxt->depth++; + val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF, + 0,0,0); + ctxt->depth--; + if (val == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); + xmlFree(ns); + if (name != NULL) + xmlFree(name); + return; + } + } else { + val = (xmlChar *) value; + } + + if (val[0] == 0) { + xmlNsErrMsg(ctxt, XML_NS_ERR_EMPTY, + "Empty namespace name for prefix %s\n", name, NULL); + } + if ((ctxt->pedantic != 0) && (val[0] != 0)) { + xmlURIPtr uri; + + uri = xmlParseURI((const char *)val); + if (uri == NULL) { + xmlNsWarnMsg(ctxt, XML_WAR_NS_URI, + "xmlns:%s: %s not a valid URI\n", name, value); + } else { + if (uri->scheme == NULL) { + xmlNsWarnMsg(ctxt, XML_WAR_NS_URI_RELATIVE, + "xmlns:%s: URI %s is not absolute\n", name, value); + } + xmlFreeURI(uri); + } + } + + /* a standard namespace definition */ + nsret = xmlNewNs(ctxt->node, val, name); + xmlFree(ns); +#ifdef LIBXML_VALID_ENABLED + /* + * Validate also for namespace decls, they are attributes from + * an XML-1.0 perspective + */ + if (nsret != NULL && ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc, + ctxt->node, prefix, nsret, value); +#endif /* LIBXML_VALID_ENABLED */ + if (name != NULL) + xmlFree(name); + if (nval != NULL) + xmlFree(nval); + if (val != value) + xmlFree(val); + return; + } + + if (ns != NULL) { + namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns); + + if (namespace == NULL) { + xmlNsErrMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, + "Namespace prefix %s of attribute %s is not defined\n", + ns, name); + } else { + xmlAttrPtr prop; + + prop = ctxt->node->properties; + while (prop != NULL) { + if (prop->ns != NULL) { + if ((xmlStrEqual(name, prop->name)) && + ((namespace == prop->ns) || + (xmlStrEqual(namespace->href, prop->ns->href)))) { + xmlNsErrMsg(ctxt, XML_ERR_ATTRIBUTE_REDEFINED, + "Attribute %s in %s redefined\n", + name, namespace->href); + ctxt->wellFormed = 0; + if (ctxt->recovery == 0) ctxt->disableSAX = 1; + goto error; + } + } + prop = prop->next; + } + } + } else { + namespace = NULL; + } + + /* !!!!!! <a toto:arg="" xmlns:toto="http://toto.com"> */ + ret = xmlNewNsPropEatName(ctxt->node, namespace, name, NULL); + + if (ret != NULL) { + if ((ctxt->replaceEntities == 0) && (!ctxt->html)) { + xmlNodePtr tmp; + + ret->children = xmlStringGetNodeList(ctxt->myDoc, value); + tmp = ret->children; + while (tmp != NULL) { + tmp->parent = (xmlNodePtr) ret; + if (tmp->next == NULL) + ret->last = tmp; + tmp = tmp->next; + } + } else if (value != NULL) { + ret->children = xmlNewDocText(ctxt->myDoc, value); + ret->last = ret->children; + if (ret->children != NULL) + ret->children->parent = (xmlNodePtr) ret; + } + } + +#ifdef LIBXML_VALID_ENABLED + if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) { + + /* + * If we don't substitute entities, the validation should be + * done on a value with replaced entities anyway. + */ + if (!ctxt->replaceEntities) { + xmlChar *val; + + ctxt->depth++; + val = xmlStringDecodeEntities(ctxt, value, XML_SUBSTITUTE_REF, + 0,0,0); + ctxt->depth--; + + if (val == NULL) + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, value); + else { + xmlChar *nvalnorm; + + /* + * Do the last stage of the attribute normalization + * It need to be done twice ... it's an extra burden related + * to the ability to keep xmlSAX2References in attributes + */ + nvalnorm = xmlValidNormalizeAttributeValue(ctxt->myDoc, + ctxt->node, fullname, val); + if (nvalnorm != NULL) { + xmlFree(val); + val = nvalnorm; + } + + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, val); + xmlFree(val); + } + } else { + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, ctxt->myDoc, + ctxt->node, ret, value); + } + } else +#endif /* LIBXML_VALID_ENABLED */ + if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) && + (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) || + ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) { + /* + * when validating, the ID registration is done at the attribute + * validation level. Otherwise we have to do specific handling here. + */ + if (xmlStrEqual(fullname, BAD_CAST "xml:id")) { + /* + * Add the xml:id value + * + * Open issue: normalization of the value. + */ + if (xmlValidateNCName(value, 1) != 0) { + xmlErrValid(ctxt, XML_DTD_XMLID_VALUE, + "xml:id : attribute value %s is not an NCName\n", + (const char *) value, NULL); + } + xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret); + } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) + xmlAddID(&ctxt->vctxt, ctxt->myDoc, value, ret); + else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) + xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret); + } + +error: + if (nval != NULL) + xmlFree(nval); + if (ns != NULL) + xmlFree(ns); +} + +/* + * xmlCheckDefaultedAttributes: + * + * Check defaulted attributes from the DTD + */ +static void +xmlCheckDefaultedAttributes(xmlParserCtxtPtr ctxt, const xmlChar *name, + const xmlChar *prefix, const xmlChar **atts) { + xmlElementPtr elemDecl; + const xmlChar *att; + int internal = 1; + int i; + + elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->intSubset, name, prefix); + if (elemDecl == NULL) { + elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset, name, prefix); + internal = 0; + } + +process_external_subset: + + if (elemDecl != NULL) { + xmlAttributePtr attr = elemDecl->attributes; + /* + * Check against defaulted attributes from the external subset + * if the document is stamped as standalone + */ + if ((ctxt->myDoc->standalone == 1) && + (ctxt->myDoc->extSubset != NULL) && + (ctxt->validate)) { + while (attr != NULL) { + if ((attr->defaultValue != NULL) && + (xmlGetDtdQAttrDesc(ctxt->myDoc->extSubset, + attr->elem, attr->name, + attr->prefix) == attr) && + (xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset, + attr->elem, attr->name, + attr->prefix) == NULL)) { + xmlChar *fulln; + + if (attr->prefix != NULL) { + fulln = xmlStrdup(attr->prefix); + fulln = xmlStrcat(fulln, BAD_CAST ":"); + fulln = xmlStrcat(fulln, attr->name); + } else { + fulln = xmlStrdup(attr->name); + } + if (fulln == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); + break; + } + + /* + * Check that the attribute is not declared in the + * serialization + */ + att = NULL; + if (atts != NULL) { + i = 0; + att = atts[i]; + while (att != NULL) { + if (xmlStrEqual(att, fulln)) + break; + i += 2; + att = atts[i]; + } + } + if (att == NULL) { + xmlErrValid(ctxt, XML_DTD_STANDALONE_DEFAULTED, + "standalone: attribute %s on %s defaulted from external subset\n", + (const char *)fulln, + (const char *)attr->elem); + } + xmlFree(fulln); + } + attr = attr->nexth; + } + } + + /* + * Actually insert defaulted values when needed + */ + attr = elemDecl->attributes; + while (attr != NULL) { + /* + * Make sure that attributes redefinition occuring in the + * internal subset are not overriden by definitions in the + * external subset. + */ + if (attr->defaultValue != NULL) { + /* + * the element should be instantiated in the tree if: + * - this is a namespace prefix + * - the user required for completion in the tree + * like XSLT + * - there isn't already an attribute definition + * in the internal subset overriding it. + */ + if (((attr->prefix != NULL) && + (xmlStrEqual(attr->prefix, BAD_CAST "xmlns"))) || + ((attr->prefix == NULL) && + (xmlStrEqual(attr->name, BAD_CAST "xmlns"))) || + (ctxt->loadsubset & XML_COMPLETE_ATTRS)) { + xmlAttributePtr tst; + + tst = xmlGetDtdQAttrDesc(ctxt->myDoc->intSubset, + attr->elem, attr->name, + attr->prefix); + if ((tst == attr) || (tst == NULL)) { + xmlChar fn[50]; + xmlChar *fulln; + + fulln = xmlBuildQName(attr->name, attr->prefix, fn, 50); + if (fulln == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); + return; + } + + /* + * Check that the attribute is not declared in the + * serialization + */ + att = NULL; + if (atts != NULL) { + i = 0; + att = atts[i]; + while (att != NULL) { + if (xmlStrEqual(att, fulln)) + break; + i += 2; + att = atts[i]; + } + } + if (att == NULL) { + xmlSAX2AttributeInternal(ctxt, fulln, + attr->defaultValue, prefix); + } + if ((fulln != fn) && (fulln != attr->name)) + xmlFree(fulln); + } + } + } + attr = attr->nexth; + } + if (internal == 1) { + elemDecl = xmlGetDtdQElementDesc(ctxt->myDoc->extSubset, + name, prefix); + internal = 0; + goto process_external_subset; + } + } +} + +/** + * xmlSAX2StartElement: + * @ctx: the user data (XML parser context) + * @fullname: The element name, including namespace prefix + * @atts: An array of name/value attributes pairs, NULL terminated + * + * called when an opening tag has been processed. + */ +void +xmlSAX2StartElement(void *ctx, const xmlChar *fullname, const xmlChar **atts) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret; + xmlNodePtr parent; + xmlNsPtr ns; + xmlChar *name; + xmlChar *prefix; + const xmlChar *att; + const xmlChar *value; + int i; + + if ((ctx == NULL) || (fullname == NULL) || (ctxt->myDoc == NULL)) return; + parent = ctxt->node; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2StartElement(%s)\n", fullname); +#endif + + /* + * First check on validity: + */ + if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) && + ((ctxt->myDoc->intSubset == NULL) || + ((ctxt->myDoc->intSubset->notations == NULL) && + (ctxt->myDoc->intSubset->elements == NULL) && + (ctxt->myDoc->intSubset->attributes == NULL) && + (ctxt->myDoc->intSubset->entities == NULL)))) { + xmlErrValid(ctxt, XML_ERR_NO_DTD, + "Validation failed: no DTD found !", NULL, NULL); + ctxt->validate = 0; + } + + + /* + * Split the full name into a namespace prefix and the tag name + */ + name = xmlSplitQName(ctxt, fullname, &prefix); + + + /* + * Note : the namespace resolution is deferred until the end of the + * attributes parsing, since local namespace can be defined as + * an attribute at this level. + */ + ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL, name, NULL); + if (ret == NULL) { + if (prefix != NULL) + xmlFree(prefix); + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); + return; + } + if (ctxt->myDoc->children == NULL) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, "Setting %s as root\n", name); +#endif + xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret); + } else if (parent == NULL) { + parent = ctxt->myDoc->children; + } + ctxt->nodemem = -1; + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } + + /* + * We are parsing a new node. + */ +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, "pushing(%s)\n", name); +#endif + nodePush(ctxt, ret); + + /* + * Link the child element + */ + if (parent != NULL) { + if (parent->type == XML_ELEMENT_NODE) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding child %s to %s\n", name, parent->name); +#endif + xmlAddChild(parent, ret); + } else { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding sibling %s to ", name); + xmlDebugDumpOneNode(stderr, parent, 0); +#endif + xmlAddSibling(parent, ret); + } + } + + /* + * Insert all the defaulted attributes from the DTD especially namespaces + */ + if ((!ctxt->html) && + ((ctxt->myDoc->intSubset != NULL) || + (ctxt->myDoc->extSubset != NULL))) { + xmlCheckDefaultedAttributes(ctxt, name, prefix, atts); + } + + /* + * process all the attributes whose name start with "xmlns" + */ + if (atts != NULL) { + i = 0; + att = atts[i++]; + value = atts[i++]; + if (!ctxt->html) { + while ((att != NULL) && (value != NULL)) { + if ((att[0] == 'x') && (att[1] == 'm') && (att[2] == 'l') && + (att[3] == 'n') && (att[4] == 's')) + xmlSAX2AttributeInternal(ctxt, att, value, prefix); + + att = atts[i++]; + value = atts[i++]; + } + } + } + + /* + * Search the namespace, note that since the attributes have been + * processed, the local namespaces are available. + */ + ns = xmlSearchNs(ctxt->myDoc, ret, prefix); + if ((ns == NULL) && (parent != NULL)) + ns = xmlSearchNs(ctxt->myDoc, parent, prefix); + if ((prefix != NULL) && (ns == NULL)) { + ns = xmlNewNs(ret, NULL, prefix); + xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, + "Namespace prefix %s is not defined\n", + prefix, NULL); + } + + /* + * set the namespace node, making sure that if the default namspace + * is unbound on a parent we simply kee it NULL + */ + if ((ns != NULL) && (ns->href != NULL) && + ((ns->href[0] != 0) || (ns->prefix != NULL))) + xmlSetNs(ret, ns); + + /* + * process all the other attributes + */ + if (atts != NULL) { + i = 0; + att = atts[i++]; + value = atts[i++]; + if (ctxt->html) { + while (att != NULL) { + xmlSAX2AttributeInternal(ctxt, att, value, NULL); + att = atts[i++]; + value = atts[i++]; + } + } else { + while ((att != NULL) && (value != NULL)) { + if ((att[0] != 'x') || (att[1] != 'm') || (att[2] != 'l') || + (att[3] != 'n') || (att[4] != 's')) + xmlSAX2AttributeInternal(ctxt, att, value, NULL); + + /* + * Next ones + */ + att = atts[i++]; + value = atts[i++]; + } + } + } + +#ifdef LIBXML_VALID_ENABLED + /* + * If it's the Document root, finish the DTD validation and + * check the document root element for validity + */ + if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) { + int chk; + + chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc); + if (chk <= 0) + ctxt->valid = 0; + if (chk < 0) + ctxt->wellFormed = 0; + ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc); + ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1; + } +#endif /* LIBXML_VALID_ENABLED */ + + if (prefix != NULL) + xmlFree(prefix); + +} + +/** + * xmlSAX2EndElement: + * @ctx: the user data (XML parser context) + * @name: The element name + * + * called when the end of an element has been detected. + */ +void +xmlSAX2EndElement(void *ctx, const xmlChar *name ATTRIBUTE_UNUSED) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlParserNodeInfo node_info; + xmlNodePtr cur; + + if (ctx == NULL) return; + cur = ctxt->node; +#ifdef DEBUG_SAX + if (name == NULL) + xmlGenericError(xmlGenericErrorContext, "SAX.xmlSAX2EndElement(NULL)\n"); + else + xmlGenericError(xmlGenericErrorContext, "SAX.xmlSAX2EndElement(%s)\n", name); +#endif + + /* Capture end position and add node */ + if (cur != NULL && ctxt->record_info) { + node_info.end_pos = ctxt->input->cur - ctxt->input->base; + node_info.end_line = ctxt->input->line; + node_info.node = cur; + xmlParserAddNodeInfo(ctxt, &node_info); + } + ctxt->nodemem = -1; + +#ifdef LIBXML_VALID_ENABLED + if (ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc, + cur); +#endif /* LIBXML_VALID_ENABLED */ + + + /* + * end of parsing of this node. + */ +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, "popping(%s)\n", cur->name); +#endif + nodePop(ctxt); +} +#endif /* LIBXML_SAX1_ENABLED || LIBXML_HTML_ENABLE */ + +/* + * xmlSAX2TextNode: + * @ctxt: the parser context + * @str: the input string + * @len: the string length + * + * Remove the entities from an attribute value + * + * Returns the newly allocated string or NULL if not needed or error + */ +static xmlNodePtr +xmlSAX2TextNode(xmlParserCtxtPtr ctxt, const xmlChar *str, int len) { + xmlNodePtr ret; + const xmlChar *intern = NULL; + + /* + * Allocate + */ + if (ctxt->freeElems != NULL) { + ret = ctxt->freeElems; + ctxt->freeElems = ret->next; + ctxt->freeElemsNr--; + } else { + ret = (xmlNodePtr) xmlMalloc(sizeof(xmlNode)); + } + if (ret == NULL) { + xmlErrMemory(ctxt, "xmlSAX2Characters"); + return(NULL); + } + memset(ret, 0, sizeof(xmlNode)); + /* + * intern the formatting blanks found between tags, or the + * very short strings + */ + if (ctxt->dictNames) { + xmlChar cur = str[len]; + + if ((len < (int) (2 * sizeof(void *))) && + (ctxt->options & XML_PARSE_COMPACT)) { + /* store the string in the node overrithing properties and nsDef */ + xmlChar *tmp = (xmlChar *) &(ret->properties); + memcpy(tmp, str, len); + tmp[len] = 0; + intern = tmp; + } else if ((len <= 3) && ((cur == '"') || (cur == '\'') || + ((cur == '<') && (str[len + 1] != '!')))) { + intern = xmlDictLookup(ctxt->dict, str, len); + } else if (IS_BLANK_CH(*str) && (len < 60) && (cur == '<') && + (str[len + 1] != '!')) { + int i; + + for (i = 1;i < len;i++) { + if (!IS_BLANK_CH(str[i])) goto skip; + } + intern = xmlDictLookup(ctxt->dict, str, len); + } + } +skip: + ret->type = XML_TEXT_NODE; + + ret->name = xmlStringText; + if (intern == NULL) { + ret->content = xmlStrndup(str, len); + if (ret->content == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2TextNode"); + xmlFree(ret); + return(NULL); + } + } else + ret->content = (xmlChar *) intern; + + if (ctxt->input != NULL) + ret->line = ctxt->input->line; + + if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue)) + xmlRegisterNodeDefaultValue(ret); + return(ret); +} + +#ifdef LIBXML_VALID_ENABLED +/* + * xmlSAX2DecodeAttrEntities: + * @ctxt: the parser context + * @str: the input string + * @len: the string length + * + * Remove the entities from an attribute value + * + * Returns the newly allocated string or NULL if not needed or error + */ +static xmlChar * +xmlSAX2DecodeAttrEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, + const xmlChar *end) { + const xmlChar *in; + xmlChar *ret; + + in = str; + while (in < end) + if (*in++ == '&') + goto decode; + return(NULL); +decode: + ctxt->depth++; + ret = xmlStringLenDecodeEntities(ctxt, str, end - str, + XML_SUBSTITUTE_REF, 0,0,0); + ctxt->depth--; + return(ret); +} +#endif /* LIBXML_VALID_ENABLED */ + +/** + * xmlSAX2AttributeNs: + * @ctx: the user data (XML parser context) + * @localname: the local name of the attribute + * @prefix: the attribute namespace prefix if available + * @URI: the attribute namespace name if available + * @value: Start of the attribute value + * @valueend: end of the attribute value + * + * Handle an attribute that has been read by the parser. + * The default handling is to convert the attribute into an + * DOM subtree and past it in a new xmlAttr element added to + * the element. + */ +static void +xmlSAX2AttributeNs(xmlParserCtxtPtr ctxt, + const xmlChar * localname, + const xmlChar * prefix, + const xmlChar * value, + const xmlChar * valueend) +{ + xmlAttrPtr ret; + xmlNsPtr namespace = NULL; + xmlChar *dup = NULL; + + /* + * Note: if prefix == NULL, the attribute is not in the default namespace + */ + if (prefix != NULL) + namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, prefix); + + /* + * allocate the node + */ + if (ctxt->freeAttrs != NULL) { + ret = ctxt->freeAttrs; + ctxt->freeAttrs = ret->next; + ctxt->freeAttrsNr--; + memset(ret, 0, sizeof(xmlAttr)); + ret->type = XML_ATTRIBUTE_NODE; + + ret->parent = ctxt->node; + ret->doc = ctxt->myDoc; + ret->ns = namespace; + + if (ctxt->dictNames) + ret->name = localname; + else + ret->name = xmlStrdup(localname); + + /* link at the end to preserv order, TODO speed up with a last */ + if (ctxt->node->properties == NULL) { + ctxt->node->properties = ret; + } else { + xmlAttrPtr prev = ctxt->node->properties; + + while (prev->next != NULL) prev = prev->next; + prev->next = ret; + ret->prev = prev; + } + + if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue)) + xmlRegisterNodeDefaultValue((xmlNodePtr)ret); + } else { + if (ctxt->dictNames) + ret = xmlNewNsPropEatName(ctxt->node, namespace, + (xmlChar *) localname, NULL); + else + ret = xmlNewNsProp(ctxt->node, namespace, localname, NULL); + if (ret == NULL) { + xmlErrMemory(ctxt, "xmlSAX2AttributeNs"); + return; + } + } + + if ((ctxt->replaceEntities == 0) && (!ctxt->html)) { + xmlNodePtr tmp; + + /* + * We know that if there is an entity reference, then + * the string has been dup'ed and terminates with 0 + * otherwise with ' or " + */ + if (*valueend != 0) { + tmp = xmlSAX2TextNode(ctxt, value, valueend - value); + ret->children = tmp; + ret->last = tmp; + if (tmp != NULL) { + tmp->doc = ret->doc; + tmp->parent = (xmlNodePtr) ret; + } + } else { + ret->children = xmlStringLenGetNodeList(ctxt->myDoc, value, + valueend - value); + tmp = ret->children; + while (tmp != NULL) { + tmp->doc = ret->doc; + tmp->parent = (xmlNodePtr) ret; + if (tmp->next == NULL) + ret->last = tmp; + tmp = tmp->next; + } + } + } else if (value != NULL) { + xmlNodePtr tmp; + + tmp = xmlSAX2TextNode(ctxt, value, valueend - value); + ret->children = tmp; + ret->last = tmp; + if (tmp != NULL) { + tmp->doc = ret->doc; + tmp->parent = (xmlNodePtr) ret; + } + } + +#ifdef LIBXML_VALID_ENABLED + if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) { + /* + * If we don't substitute entities, the validation should be + * done on a value with replaced entities anyway. + */ + if (!ctxt->replaceEntities) { + dup = xmlSAX2DecodeAttrEntities(ctxt, value, valueend); + if (dup == NULL) { + if (*valueend == 0) { + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, value); + } else { + /* + * That should already be normalized. + * cheaper to finally allocate here than duplicate + * entry points in the full validation code + */ + dup = xmlStrndup(value, valueend - value); + + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, dup); + } + } else { + /* + * dup now contains a string of the flattened attribute + * content with entities substitued. Check if we need to + * apply an extra layer of normalization. + * It need to be done twice ... it's an extra burden related + * to the ability to keep references in attributes + */ + if (ctxt->attsSpecial != NULL) { + xmlChar *nvalnorm; + xmlChar fn[50]; + xmlChar *fullname; + + fullname = xmlBuildQName(localname, prefix, fn, 50); + if (fullname != NULL) { + ctxt->vctxt.valid = 1; + nvalnorm = xmlValidCtxtNormalizeAttributeValue( + &ctxt->vctxt, ctxt->myDoc, + ctxt->node, fullname, dup); + if (ctxt->vctxt.valid != 1) + ctxt->valid = 0; + + if ((fullname != fn) && (fullname != localname)) + xmlFree(fullname); + if (nvalnorm != NULL) { + xmlFree(dup); + dup = nvalnorm; + } + } + } + + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, dup); + } + } else { + /* + * if entities already have been substitued, then + * the attribute as passed is already normalized + */ + dup = xmlStrndup(value, valueend - value); + + ctxt->valid &= xmlValidateOneAttribute(&ctxt->vctxt, + ctxt->myDoc, ctxt->node, ret, dup); + } + } else +#endif /* LIBXML_VALID_ENABLED */ + if (((ctxt->loadsubset & XML_SKIP_IDS) == 0) && + (((ctxt->replaceEntities == 0) && (ctxt->external != 2)) || + ((ctxt->replaceEntities != 0) && (ctxt->inSubset == 0)))) { + /* + * when validating, the ID registration is done at the attribute + * validation level. Otherwise we have to do specific handling here. + */ + if ((prefix == ctxt->str_xml) && + (localname[0] == 'i') && (localname[1] == 'd') && + (localname[2] == 0)) { + /* + * Add the xml:id value + * + * Open issue: normalization of the value. + */ + if (dup == NULL) + dup = xmlStrndup(value, valueend - value); +#ifdef LIBXML_VALID_ENABLED + if (xmlValidateNCName(dup, 1) != 0) { + xmlErrValid(ctxt, XML_DTD_XMLID_VALUE, + "xml:id : attribute value %s is not an NCName\n", + (const char *) dup, NULL); + } +#endif + xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret); + } else if (xmlIsID(ctxt->myDoc, ctxt->node, ret)) { + /* might be worth duplicate entry points and not copy */ + if (dup == NULL) + dup = xmlStrndup(value, valueend - value); + xmlAddID(&ctxt->vctxt, ctxt->myDoc, dup, ret); + } else if (xmlIsRef(ctxt->myDoc, ctxt->node, ret)) { + if (dup == NULL) + dup = xmlStrndup(value, valueend - value); + xmlAddRef(&ctxt->vctxt, ctxt->myDoc, dup, ret); + } + } + if (dup != NULL) + xmlFree(dup); +} + +/** + * xmlSAX2StartElementNs: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * @nb_namespaces: number of namespace definitions on that node + * @namespaces: pointer to the array of prefix/URI pairs namespace definitions + * @nb_attributes: the number of attributes on that node + * @nb_defaulted: the number of defaulted attributes. + * @attributes: pointer to the array of (localname/prefix/URI/value/end) + * attribute values. + * + * SAX2 callback when an element start has been detected by the parser. + * It provides the namespace informations for the element, as well as + * the new namespace declarations on the element. + */ +void +xmlSAX2StartElementNs(void *ctx, + const xmlChar *localname, + const xmlChar *prefix, + const xmlChar *URI, + int nb_namespaces, + const xmlChar **namespaces, + int nb_attributes, + int nb_defaulted, + const xmlChar **attributes) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret; + xmlNodePtr parent; + xmlNsPtr last = NULL, ns; + const xmlChar *uri, *pref; + int i, j; + + if (ctx == NULL) return; + parent = ctxt->node; + /* + * First check on validity: + */ + if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) && + ((ctxt->myDoc->intSubset == NULL) || + ((ctxt->myDoc->intSubset->notations == NULL) && + (ctxt->myDoc->intSubset->elements == NULL) && + (ctxt->myDoc->intSubset->attributes == NULL) && + (ctxt->myDoc->intSubset->entities == NULL)))) { + xmlErrValid(ctxt, XML_ERR_NO_DTD, + "Validation failed: no DTD found !", NULL, NULL); + ctxt->validate = 0; + } + + /* + * allocate the node + */ + if (ctxt->freeElems != NULL) { + ret = ctxt->freeElems; + ctxt->freeElems = ret->next; + ctxt->freeElemsNr--; + memset(ret, 0, sizeof(xmlNode)); + ret->type = XML_ELEMENT_NODE; + + if (ctxt->dictNames) + ret->name = localname; + else { + ret->name = xmlStrdup(localname); + if (ret->name == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs"); + return; + } + } + if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue)) + xmlRegisterNodeDefaultValue(ret); + } else { + if (ctxt->dictNames) + ret = xmlNewDocNodeEatName(ctxt->myDoc, NULL, + (xmlChar *) localname, NULL); + else + ret = xmlNewDocNode(ctxt->myDoc, NULL, localname, NULL); + if (ret == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs"); + return; + } + } + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } + + if ((ctxt->myDoc->children == NULL) || (parent == NULL)) { + xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret); + } + /* + * Build the namespace list + */ + for (i = 0,j = 0;j < nb_namespaces;j++) { + pref = namespaces[i++]; + uri = namespaces[i++]; + ns = xmlNewNs(NULL, uri, pref); + if (ns != NULL) { + if (last == NULL) { + ret->nsDef = last = ns; + } else { + last->next = ns; + last = ns; + } + if ((URI != NULL) && (prefix == pref)) + ret->ns = ns; + } else { + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs"); + return; + } +#ifdef LIBXML_VALID_ENABLED + if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) { + ctxt->valid &= xmlValidateOneNamespace(&ctxt->vctxt, ctxt->myDoc, + ret, prefix, ns, uri); + } +#endif /* LIBXML_VALID_ENABLED */ + } + ctxt->nodemem = -1; + + /* + * We are parsing a new node. + */ + nodePush(ctxt, ret); + + /* + * Link the child element + */ + if (parent != NULL) { + if (parent->type == XML_ELEMENT_NODE) { + xmlAddChild(parent, ret); + } else { + xmlAddSibling(parent, ret); + } + } + + /* + * Insert the defaulted attributes from the DTD only if requested: + */ + if ((nb_defaulted != 0) && + ((ctxt->loadsubset & XML_COMPLETE_ATTRS) == 0)) + nb_attributes -= nb_defaulted; + + /* + * Search the namespace if it wasn't already found + * Note that, if prefix is NULL, this searches for the default Ns + */ + if ((URI != NULL) && (ret->ns == NULL)) { + ret->ns = xmlSearchNs(ctxt->myDoc, parent, prefix); + if ((ret->ns == NULL) && (xmlStrEqual(prefix, BAD_CAST "xml"))) { + ret->ns = xmlSearchNs(ctxt->myDoc, ret, prefix); + } + if (ret->ns == NULL) { + ns = xmlNewNs(ret, NULL, prefix); + if (ns == NULL) { + + xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs"); + return; + } + if (prefix != NULL) + xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, + "Namespace prefix %s was not found\n", + prefix, NULL); + else + xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, + "Namespace default prefix was not found\n", + NULL, NULL); + } + } + + /* + * process all the other attributes + */ + if (nb_attributes > 0) { + for (j = 0,i = 0;i < nb_attributes;i++,j+=5) { + xmlSAX2AttributeNs(ctxt, attributes[j], attributes[j+1], + attributes[j+3], attributes[j+4]); + } + } + +#ifdef LIBXML_VALID_ENABLED + /* + * If it's the Document root, finish the DTD validation and + * check the document root element for validity + */ + if ((ctxt->validate) && (ctxt->vctxt.finishDtd == XML_CTXT_FINISH_DTD_0)) { + int chk; + + chk = xmlValidateDtdFinal(&ctxt->vctxt, ctxt->myDoc); + if (chk <= 0) + ctxt->valid = 0; + if (chk < 0) + ctxt->wellFormed = 0; + ctxt->valid &= xmlValidateRoot(&ctxt->vctxt, ctxt->myDoc); + ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_1; + } +#endif /* LIBXML_VALID_ENABLED */ +} + +/** + * xmlSAX2EndElementNs: + * @ctx: the user data (XML parser context) + * @localname: the local name of the element + * @prefix: the element namespace prefix if available + * @URI: the element namespace name if available + * + * SAX2 callback when an element end has been detected by the parser. + * It provides the namespace informations for the element. + */ +void +xmlSAX2EndElementNs(void *ctx, + const xmlChar * localname ATTRIBUTE_UNUSED, + const xmlChar * prefix ATTRIBUTE_UNUSED, + const xmlChar * URI ATTRIBUTE_UNUSED) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlParserNodeInfo node_info; + xmlNodePtr cur; + + if (ctx == NULL) return; + cur = ctxt->node; + /* Capture end position and add node */ + if ((ctxt->record_info) && (cur != NULL)) { + node_info.end_pos = ctxt->input->cur - ctxt->input->base; + node_info.end_line = ctxt->input->line; + node_info.node = cur; + xmlParserAddNodeInfo(ctxt, &node_info); + } + ctxt->nodemem = -1; + +#ifdef LIBXML_VALID_ENABLED + if (ctxt->validate && ctxt->wellFormed && + ctxt->myDoc && ctxt->myDoc->intSubset) + ctxt->valid &= xmlValidateOneElement(&ctxt->vctxt, ctxt->myDoc, cur); +#endif /* LIBXML_VALID_ENABLED */ + + /* + * end of parsing of this node. + */ + nodePop(ctxt); +} + +/** + * xmlSAX2Reference: + * @ctx: the user data (XML parser context) + * @name: The entity name + * + * called when an entity xmlSAX2Reference is detected. + */ +void +xmlSAX2Reference(void *ctx, const xmlChar *name) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret; + + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2Reference(%s)\n", name); +#endif + if (name[0] == '#') + ret = xmlNewCharRef(ctxt->myDoc, name); + else + ret = xmlNewReference(ctxt->myDoc, name); +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "add xmlSAX2Reference %s to %s \n", name, ctxt->node->name); +#endif + if (xmlAddChild(ctxt->node, ret) == NULL) { + xmlFreeNode(ret); + } +} + +/** + * xmlSAX2Characters: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * receiving some chars from the parser. + */ +void +xmlSAX2Characters(void *ctx, const xmlChar *ch, int len) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr lastChild; + + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2Characters(%.30s, %d)\n", ch, len); +#endif + /* + * Handle the data if any. If there is no child + * add it as content, otherwise if the last child is text, + * concatenate it, else create a new node of type text. + */ + + if (ctxt->node == NULL) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "add chars: ctxt->node == NULL !\n"); +#endif + return; + } + lastChild = ctxt->node->last; +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "add chars to %s \n", ctxt->node->name); +#endif + + /* + * Here we needed an accelerator mechanism in case of very large + * elements. Use an attribute in the structure !!! + */ + if (lastChild == NULL) { + lastChild = xmlSAX2TextNode(ctxt, ch, len); + if (lastChild != NULL) { + ctxt->node->children = lastChild; + ctxt->node->last = lastChild; + lastChild->parent = ctxt->node; + lastChild->doc = ctxt->node->doc; + ctxt->nodelen = len; + ctxt->nodemem = len + 1; + } else { + xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters"); + return; + } + } else { + int coalesceText = (lastChild != NULL) && + (lastChild->type == XML_TEXT_NODE) && + (lastChild->name == xmlStringText); + if ((coalesceText) && (ctxt->nodemem != 0)) { + /* + * The whole point of maintaining nodelen and nodemem, + * xmlTextConcat is too costly, i.e. compute length, + * reallocate a new buffer, move data, append ch. Here + * We try to minimaze realloc() uses and avoid copying + * and recomputing length over and over. + */ + if (lastChild->content == (xmlChar *)&(lastChild->properties)) { + lastChild->content = xmlStrdup(lastChild->content); + lastChild->properties = NULL; + } else if ((ctxt->nodemem == ctxt->nodelen + 1) && + (xmlDictOwns(ctxt->dict, lastChild->content))) { + lastChild->content = xmlStrdup(lastChild->content); + } + if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) && + ((ctxt->options & XML_PARSE_HUGE) == 0)) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node"); + return; + } + if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len || + (size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented"); + return; + } + if (ctxt->nodelen + len >= ctxt->nodemem) { + xmlChar *newbuf; + size_t size; + + size = ctxt->nodemem + len; + size *= 2; + newbuf = (xmlChar *) xmlRealloc(lastChild->content,size); + if (newbuf == NULL) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters"); + return; + } + ctxt->nodemem = size; + lastChild->content = newbuf; + } + memcpy(&lastChild->content[ctxt->nodelen], ch, len); + ctxt->nodelen += len; + lastChild->content[ctxt->nodelen] = 0; + } else if (coalesceText) { + if (xmlTextConcat(lastChild, ch, len)) { + xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters"); + } + if (ctxt->node->children != NULL) { + ctxt->nodelen = xmlStrlen(lastChild->content); + ctxt->nodemem = ctxt->nodelen + 1; + } + } else { + /* Mixed content, first time */ + lastChild = xmlSAX2TextNode(ctxt, ch, len); + if (lastChild != NULL) { + xmlAddChild(ctxt->node, lastChild); + if (ctxt->node->children != NULL) { + ctxt->nodelen = len; + ctxt->nodemem = len + 1; + } + } + } + } +} + +/** + * xmlSAX2IgnorableWhitespace: + * @ctx: the user data (XML parser context) + * @ch: a xmlChar string + * @len: the number of xmlChar + * + * receiving some ignorable whitespaces from the parser. + * UNUSED: by default the DOM building will use xmlSAX2Characters + */ +void +xmlSAX2IgnorableWhitespace(void *ctx ATTRIBUTE_UNUSED, const xmlChar *ch ATTRIBUTE_UNUSED, int len ATTRIBUTE_UNUSED) +{ + /* xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; */ +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2IgnorableWhitespace(%.30s, %d)\n", ch, len); +#endif +} + +/** + * xmlSAX2ProcessingInstruction: + * @ctx: the user data (XML parser context) + * @target: the target name + * @data: the PI data's + * + * A processing instruction has been parsed. + */ +void +xmlSAX2ProcessingInstruction(void *ctx, const xmlChar *target, + const xmlChar *data) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret; + xmlNodePtr parent; + + if (ctx == NULL) return; + parent = ctxt->node; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.xmlSAX2ProcessingInstruction(%s, %s)\n", target, data); +#endif + + ret = xmlNewDocPI(ctxt->myDoc, target, data); + if (ret == NULL) return; + + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } + if (ctxt->inSubset == 1) { + xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret); + return; + } else if (ctxt->inSubset == 2) { + xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret); + return; + } + if ((ctxt->myDoc->children == NULL) || (parent == NULL)) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "Setting PI %s as root\n", target); +#endif + xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret); + return; + } + if (parent->type == XML_ELEMENT_NODE) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding PI %s child to %s\n", target, parent->name); +#endif + xmlAddChild(parent, ret); + } else { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding PI %s sibling to ", target); + xmlDebugDumpOneNode(stderr, parent, 0); +#endif + xmlAddSibling(parent, ret); + } +} + +/** + * xmlSAX2Comment: + * @ctx: the user data (XML parser context) + * @value: the xmlSAX2Comment content + * + * A xmlSAX2Comment has been parsed. + */ +void +xmlSAX2Comment(void *ctx, const xmlChar *value) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret; + xmlNodePtr parent; + + if (ctx == NULL) return; + parent = ctxt->node; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, "SAX.xmlSAX2Comment(%s)\n", value); +#endif + ret = xmlNewDocComment(ctxt->myDoc, value); + if (ret == NULL) return; + if (ctxt->linenumbers) { + if (ctxt->input != NULL) { + if (ctxt->input->line < 65535) + ret->line = (short) ctxt->input->line; + else + ret->line = 65535; + } + } + + if (ctxt->inSubset == 1) { + xmlAddChild((xmlNodePtr) ctxt->myDoc->intSubset, ret); + return; + } else if (ctxt->inSubset == 2) { + xmlAddChild((xmlNodePtr) ctxt->myDoc->extSubset, ret); + return; + } + if ((ctxt->myDoc->children == NULL) || (parent == NULL)) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "Setting xmlSAX2Comment as root\n"); +#endif + xmlAddChild((xmlNodePtr) ctxt->myDoc, (xmlNodePtr) ret); + return; + } + if (parent->type == XML_ELEMENT_NODE) { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding xmlSAX2Comment child to %s\n", parent->name); +#endif + xmlAddChild(parent, ret); + } else { +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "adding xmlSAX2Comment sibling to "); + xmlDebugDumpOneNode(stderr, parent, 0); +#endif + xmlAddSibling(parent, ret); + } +} + +/** + * xmlSAX2CDataBlock: + * @ctx: the user data (XML parser context) + * @value: The pcdata content + * @len: the block length + * + * called when a pcdata block has been parsed + */ +void +xmlSAX2CDataBlock(void *ctx, const xmlChar *value, int len) +{ + xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; + xmlNodePtr ret, lastChild; + + if (ctx == NULL) return; +#ifdef DEBUG_SAX + xmlGenericError(xmlGenericErrorContext, + "SAX.pcdata(%.10s, %d)\n", value, len); +#endif + lastChild = xmlGetLastChild(ctxt->node); +#ifdef DEBUG_SAX_TREE + xmlGenericError(xmlGenericErrorContext, + "add chars to %s \n", ctxt->node->name); +#endif + if ((lastChild != NULL) && + (lastChild->type == XML_CDATA_SECTION_NODE)) { + xmlTextConcat(lastChild, value, len); + } else { + ret = xmlNewCDataBlock(ctxt->myDoc, value, len); + xmlAddChild(ctxt->node, ret); + } +} + +static int xmlSAX2DefaultVersionValue = 2; + +#ifdef LIBXML_SAX1_ENABLED +/** + * xmlSAXDefaultVersion: + * @version: the version, 1 or 2 + * + * Set the default version of SAX used globally by the library. + * By default, during initialization the default is set to 2. + * Note that it is generally a better coding style to use + * xmlSAXVersion() to set up the version explicitly for a given + * parsing context. + * + * Returns the previous value in case of success and -1 in case of error. + */ +int +xmlSAXDefaultVersion(int version) +{ + int ret = xmlSAX2DefaultVersionValue; + + if ((version != 1) && (version != 2)) + return(-1); + xmlSAX2DefaultVersionValue = version; + return(ret); +} +#endif /* LIBXML_SAX1_ENABLED */ + +/** + * xmlSAXVersion: + * @hdlr: the SAX handler + * @version: the version, 1 or 2 + * + * Initialize the default XML SAX handler according to the version + * + * Returns 0 in case of success and -1 in case of error. + */ +int +xmlSAXVersion(xmlSAXHandler *hdlr, int version) +{ + if (hdlr == NULL) return(-1); + if (version == 2) { + hdlr->startElement = NULL; + hdlr->endElement = NULL; + hdlr->startElementNs = xmlSAX2StartElementNs; + hdlr->endElementNs = xmlSAX2EndElementNs; + hdlr->serror = NULL; + hdlr->initialized = XML_SAX2_MAGIC; +#ifdef LIBXML_SAX1_ENABLED + } else if (version == 1) { + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->initialized = 1; +#endif /* LIBXML_SAX1_ENABLED */ + } else + return(-1); + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = xmlSAX2ExternalSubset; + hdlr->isStandalone = xmlSAX2IsStandalone; + hdlr->hasInternalSubset = xmlSAX2HasInternalSubset; + hdlr->hasExternalSubset = xmlSAX2HasExternalSubset; + hdlr->resolveEntity = xmlSAX2ResolveEntity; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = xmlSAX2GetParameterEntity; + hdlr->entityDecl = xmlSAX2EntityDecl; + hdlr->attributeDecl = xmlSAX2AttributeDecl; + hdlr->elementDecl = xmlSAX2ElementDecl; + hdlr->notationDecl = xmlSAX2NotationDecl; + hdlr->unparsedEntityDecl = xmlSAX2UnparsedEntityDecl; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->reference = xmlSAX2Reference; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = xmlSAX2CDataBlock; + hdlr->ignorableWhitespace = xmlSAX2Characters; + hdlr->processingInstruction = xmlSAX2ProcessingInstruction; + hdlr->comment = xmlSAX2Comment; + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + return(0); +} + +/** + * xmlSAX2InitDefaultSAXHandler: + * @hdlr: the SAX handler + * @warning: flag if non-zero sets the handler warning procedure + * + * Initialize the default XML SAX2 handler + */ +void +xmlSAX2InitDefaultSAXHandler(xmlSAXHandler *hdlr, int warning) +{ + if ((hdlr == NULL) || (hdlr->initialized != 0)) + return; + + xmlSAXVersion(hdlr, xmlSAX2DefaultVersionValue); + if (warning == 0) + hdlr->warning = NULL; + else + hdlr->warning = xmlParserWarning; +} + +/** + * xmlDefaultSAXHandlerInit: + * + * Initialize the default SAX2 handler + */ +void +xmlDefaultSAXHandlerInit(void) +{ +#ifdef LIBXML_SAX1_ENABLED + xmlSAXVersion((xmlSAXHandlerPtr) &xmlDefaultSAXHandler, 1); +#endif /* LIBXML_SAX1_ENABLED */ +} + +#ifdef LIBXML_HTML_ENABLED + +/** + * xmlSAX2InitHtmlDefaultSAXHandler: + * @hdlr: the SAX handler + * + * Initialize the default HTML SAX2 handler + */ +void +xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr) +{ + if ((hdlr == NULL) || (hdlr->initialized != 0)) + return; + + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = NULL; + hdlr->isStandalone = NULL; + hdlr->hasInternalSubset = NULL; + hdlr->hasExternalSubset = NULL; + hdlr->resolveEntity = NULL; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = NULL; + hdlr->entityDecl = NULL; + hdlr->attributeDecl = NULL; + hdlr->elementDecl = NULL; + hdlr->notationDecl = NULL; + hdlr->unparsedEntityDecl = NULL; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->reference = NULL; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = xmlSAX2CDataBlock; + hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + hdlr->processingInstruction = xmlSAX2ProcessingInstruction; + hdlr->comment = xmlSAX2Comment; + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + hdlr->initialized = 1; +} + +/** + * htmlDefaultSAXHandlerInit: + * + * Initialize the default SAX handler + */ +void +htmlDefaultSAXHandlerInit(void) +{ + xmlSAX2InitHtmlDefaultSAXHandler((xmlSAXHandlerPtr) &htmlDefaultSAXHandler); +} + +#endif /* LIBXML_HTML_ENABLED */ + +#ifdef LIBXML_DOCB_ENABLED + +/** + * xmlSAX2InitDocbDefaultSAXHandler: + * @hdlr: the SAX handler + * + * Initialize the default DocBook SAX2 handler + */ +void +xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr) +{ + if ((hdlr == NULL) || (hdlr->initialized != 0)) + return; + + hdlr->internalSubset = xmlSAX2InternalSubset; + hdlr->externalSubset = NULL; + hdlr->isStandalone = xmlSAX2IsStandalone; + hdlr->hasInternalSubset = xmlSAX2HasInternalSubset; + hdlr->hasExternalSubset = xmlSAX2HasExternalSubset; + hdlr->resolveEntity = xmlSAX2ResolveEntity; + hdlr->getEntity = xmlSAX2GetEntity; + hdlr->getParameterEntity = NULL; + hdlr->entityDecl = xmlSAX2EntityDecl; + hdlr->attributeDecl = NULL; + hdlr->elementDecl = NULL; + hdlr->notationDecl = NULL; + hdlr->unparsedEntityDecl = NULL; + hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator; + hdlr->startDocument = xmlSAX2StartDocument; + hdlr->endDocument = xmlSAX2EndDocument; + hdlr->startElement = xmlSAX2StartElement; + hdlr->endElement = xmlSAX2EndElement; + hdlr->reference = xmlSAX2Reference; + hdlr->characters = xmlSAX2Characters; + hdlr->cdataBlock = NULL; + hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + hdlr->processingInstruction = NULL; + hdlr->comment = xmlSAX2Comment; + hdlr->warning = xmlParserWarning; + hdlr->error = xmlParserError; + hdlr->fatalError = xmlParserError; + + hdlr->initialized = 1; +} + +/** + * docbDefaultSAXHandlerInit: + * + * Initialize the default SAX handler + */ +void +docbDefaultSAXHandlerInit(void) +{ + xmlSAX2InitDocbDefaultSAXHandler((xmlSAXHandlerPtr) &docbDefaultSAXHandler); +} + +#endif /* LIBXML_DOCB_ENABLED */ +#define bottom_SAX2 +#include "elfgcchack.h"
diff --git a/libxml2-2.7.7/TODO b/libxml2-2.7.7/TODO new file mode 100644 index 0000000..9c32224 --- /dev/null +++ b/libxml2-2.7.7/TODO
@@ -0,0 +1,278 @@ +124907 HTML parse buffer problem when parsing larse in-memory docs +124110 DTD validation && wrong namespace +123564 xmllint --html --format + + TODO for the XML parser and stuff: + ================================== + + $Id$ + + this tend to be outdated :-\ ... + +DOCS: +===== + +- use case of using XInclude to load for example a description. + order document + product base -(XSLT)-> quote with XIncludes + | + HTML output with description of parts <---(XSLT)-- + +TODO: +===== +- XInclude at the SAX level (libSRVG) +- fix the C code prototype to bring back doc/libxml-undocumented.txt + to a reasonable level +- Computation of base when HTTP redirect occurs, might affect HTTP + interfaces. +- Computation of base in XInclude. Relativization of URIs. +- listing all attributes in a node. +- Better checking of external parsed entities TAG 1234 +- Go through erratas and do the cleanup. + http://www.w3.org/XML/xml-19980210-errata ... started ... +- jamesh suggestion: SAX like functions to save a document ie. call a + function to open a new element with given attributes, write character + data, close last element, etc + + inversted SAX, initial patch in April 2002 archives. +- htmlParseDoc has parameter encoding which is not used. + Function htmlCreateDocParserCtxt ignore it. +- fix realloc() usage. +- Stricten the UTF8 conformance (Martin Duerst): + http://www.w3.org/2001/06/utf-8-test/. + The bad files are in http://www.w3.org/2001/06/utf-8-wrong/. +- xml:id normalized value + +TODO: +===== + +- move all string manipulation functions (xmlStrdup, xmlStrlen, etc.) to + global.c. Bjorn noted that the following files depends on parser.o solely + because of these string functions: entities.o, global.o, hash.o, tree.o, + xmlIO.o, and xpath.o. + +- Optimization of tag strings allocation ? + +- maintain coherency of namespace when doing cut'n paste operations + => the functions are coded, but need testing + +- function to rebuild the ID table +- functions to rebuild the DTD hash tables (after DTD changes). + + +EXTENSIONS: +=========== + +- Tools to produce man pages from the SGML docs. + +- Add Xpointer recognition/API + +- Add Xlink recognition/API + => started adding an xlink.[ch] with a unified API for XML and HTML. + it's crap :-( + +- Implement XSchemas + => Really need to be done <grin/> + - datatype are complete, but structure support is very limited. + +- extend the shell with: + - edit + - load/save + - mv (yum, yum, but it's harder because directories are ordered in + our case, mvup and mvdown would be required) + + +Done: +===== + +- Add HTML validation using the XHTML DTD + - problem: do we want to keep and maintain the code for handling + DTD/System ID cache directly in libxml ? + => not really done that way, but there are new APIs to check elements + or attributes. Otherwise XHTML validation directly ... + +- XML Schemas datatypes except Base64 and BinHex + +- Relax NG validation + +- XmlTextReader streaming API + validation + +- Add a DTD cache prefilled with xhtml DTDs and entities and a program to + manage them -> like the /usr/bin/install-catalog from SGML + right place seems $datadir/xmldtds + Maybe this is better left to user apps + => use a catalog instead , and xhtml1-dtd package + +- Add output to XHTML + => XML serializer automatically recognize the DTd and apply the specific + rules. + +- Fix output of <tst val="x
y"/> + +- compliance to XML-Namespace checking, see section 6 of + http://www.w3.org/TR/REC-xml-names/ + +- Correct standalone checking/emitting (hard) + 2.9 Standalone Document Declaration + +- Implement OASIS XML Catalog support + http://www.oasis-open.org/committees/entity/ + +- Get OASIS testsuite to a more friendly result, check all the results + once stable. the check-xml-test-suite.py script does this + +- Implement XSLT + => libxslt + +- Finish XPath + => attributes addressing troubles + => defaulted attributes handling + => namespace axis ? + done as XSLT got debugged + +- bug reported by Michael Meallin on validation problems + => Actually means I need to add support (and warn) for non-deterministic + content model. +- Handle undefined namespaces in entity contents better ... at least + issue a warning +- DOM needs + int xmlPruneProp(xmlNodePtr node, xmlAtttrPtr attr); + => done it's actually xmlRemoveProp xmlUnsetProp xmlUnsetNsProp + +- HTML: handling of Script and style data elements, need special code in + the parser and saving functions (handling of < > " ' ...): + http://www.w3.org/TR/html4/types.html#type-script + Attributes are no problems since entities are accepted. +- DOM needs + xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const xmlChar *name, const xmlChar *value) +- problem when parsing hrefs with & with the HTML parser (IRC ac) +- If the internal encoding is not UTF8 saving to a given encoding doesn't + work => fix to force UTF8 encoding ... + done, added documentation too +- Add an ASCII I/O encoder (asciiToUTF8 and UTF8Toascii) +- Issue warning when using non-absolute namespaces URI. +- the html parser should add <head> and <body> if they don't exist + started, not finished. + Done, the automatic closing is added and 3 testcases were inserted +- Command to force the parser to stop parsing and ignore the rest of the file. + xmlStopParser() should allow this, mostly untested +- support for HTML empty attributes like <hr noshade> +- plugged iconv() in for support of a large set of encodings. +- xmlSwitchToEncoding() rewrite done +- URI checkings (no fragments) rfc2396.txt +- Added a clean mechanism for overload or added input methods: + xmlRegisterInputCallbacks() +- dynamically adapt the alloc entry point to use g_alloc()/g_free() + if the programmer wants it: + - use xmlMemSetup() to reset the routines used. +- Check attribute normalization especially xmlGetProp() +- Validity checking problems for NOTATIONS attributes +- Validity checking problems for ENTITY ENTITIES attributes +- Parsing of a well balanced chunk xmlParseBalancedChunkMemory() +- URI module: validation, base, etc ... see uri.[ch] +- turn tester into a generic program xmllint installed with libxml +- extend validity checks to go through entities content instead of + just labelling them PCDATA +- Save Dtds using the children list instead of dumping the tables, + order is preserved as well as comments and PIs +- Wrote a notice of changes requires to go from 1.x to 2.x +- make sure that all SAX callbacks are disabled if a WF error is detected +- checking/handling of newline normalization + http://localhost/www.xml.com/axml/target.html#sec-line-ends +- correct checking of '&' '%' on entities content. +- checking of PE/Nesting on entities declaration +- checking/handling of xml:space + - checking done. + - handling done, not well tested +- Language identification code, productions [33] to [38] + => done, the check has been added and report WFness errors +- Conditional sections in DTDs [61] to [65] + => should this crap be really implemented ??? + => Yep OASIS testsuite uses them +- Allow parsed entities defined in the internal subset to override + the ones defined in the external subset (DtD customization). + => This mean that the entity content should be computed only at + use time, i.e. keep the orig string only at parse time and expand + only when referenced from the external subset :-( + Needed for complete use of most DTD from Eve Maler +- Add regression tests for all WFC errors + => did some in test/WFC + => added OASIS testsuite routines + http://xmlsoft.org/conf/result.html + +- I18N: http://wap.trondheim.com/vaer/index.phtml is not XML and accepted + by the XML parser, UTF-8 should be checked when there is no "encoding" + declared ! +- Support for UTF-8 and UTF-16 encoding + => added some convertion routines provided by Martin Durst + patched them, got fixes from @@@ + I plan to keep everything internally as UTF-8 (or ISO-Latin-X) + this is slightly more costly but more compact, and recent processors + efficiency is cache related. The key for good performances is keeping + the data set small, so will I. + => the new progressive reading routines call the detection code + is enabled, tested the ISO->UTF-8 stuff +- External entities loading: + - allow override by client code + - make sure it is alled for all external entities referenced + Done, client code should use xmlSetExternalEntityLoader() to set + the default loading routine. It will be called each time an external + entity entity resolution is triggered. +- maintain ID coherency when removing/changing attributes + The function used to deallocate attributes now check for it being an + ID and removes it from the table. +- push mode parsing i.e. non-blocking state based parser + done, both for XML and HTML parsers. Use xmlCreatePushParserCtxt() + and xmlParseChunk() and html counterparts. + The tester program now has a --push option to select that parser + front-end. Douplicated tests to use both and check results are similar. + +- Most of XPath, still see some troubles and occasionnal memleaks. +- an XML shell, allowing to traverse/manipulate an XML document with + a shell like interface, and using XPath for the anming syntax + - use of readline and history added when available + - the shell interface has been cleanly separated and moved to debugXML.c +- HTML parser, should be fairly stable now +- API to search the lang of an attribute +- Collect IDs at parsing and maintain a table. + PBM: maintain the table coherency + PBM: how to detect ID types in absence of DtD ! +- Use it for XPath ID support +- Add validity checking + Should be finished now ! +- Add regression tests with entity substitutions + +- External Parsed entities, either XML or external Subset [78] and [79] + parsing the xmllang DtD now works, so it should be sufficient for + most cases ! + +- progressive reading. The entity support is a first step toward + asbtraction of an input stream. A large part of the context is still + located on the stack, moving to a state machine and putting everyting + in the parsing context should provide an adequate solution. + => Rather than progressive parsing, give more power to the SAX-like + interface. Currently the DOM-like representation is built but + => it should be possible to define that only as a set of SAX callbacks + and remove the tree creation from the parser code. + DONE + +- DOM support, instead of using a proprietary in memory + format for the document representation, the parser should + call a DOM API to actually build the resulting document. + Then the parser becomes independent of the in-memory + representation of the document. Even better using RPC's + the parser can actually build the document in another + program. + => Work started, now the internal representation is by default + very near a direct DOM implementation. The DOM glue is implemented + as a separate module. See the GNOME gdome module. + +- C++ support : John Ehresman <jehresma@dsg.harvard.edu> +- Updated code to follow more recent specs, added compatibility flag +- Better error handling, use a dedicated, overridable error + handling function. +- Support for CDATA. +- Keep track of line numbers for better error reporting. +- Support for PI (SAX one). +- Support for Comments (bad, should be in ASAP, they are parsed + but not stored), should be configurable. +- Improve the support of entities on save (+SAX). +
diff --git a/libxml2-2.7.7/TODO_SCHEMAS b/libxml2-2.7.7/TODO_SCHEMAS new file mode 100644 index 0000000..145a4ed --- /dev/null +++ b/libxml2-2.7.7/TODO_SCHEMAS
@@ -0,0 +1,31 @@ +- implement counted transitions at the automata level + +- Unicode: + + upgrade to 3.2 + + improve the python script to generate better test + expressions to check the list of ranges. + +- Implement the interface at the SAX level + +- Implement the missing parts in the Structure part + + all content model + + enumerations + + countless others c.f. the TODO scattered in the code + +- Complete the Built-In datatype collections and Facets implementations + +- Regression tests based on + + the primer: + http://www.w3.org/TR/xmlschema-0/ + + the Schemas Test Collection: + http://www.w3.org/2001/05/xmlschema-test-collection/ + + archives of the schemas-dev list + +- Integrity constraints: + + what's that ? How need to read about it + +- "formal" checking, i.e. go through the full Structure spec and + bind code and associated parts of the Schemas spec + +- go though the erratas + http://www.w3.org/2001/05/xmlschema-errata
diff --git a/libxml2-2.7.7/VxWorks/Makefile b/libxml2-2.7.7/VxWorks/Makefile new file mode 100644 index 0000000..a1f6902 --- /dev/null +++ b/libxml2-2.7.7/VxWorks/Makefile
@@ -0,0 +1,68 @@ +##---------------------------------------------------------------- +## +##-- Filename: Makefile +## +##-- $Date: 2008/02/23 02:56:17 $ +##-- $Revision: 1.2 $ +##-- $Name: $ +## +##---------------------------------------------------------------- + +NAME = xml2 +TOOL_FAMILY=gnu + +include $(WIND_USR)/tool/gnu/make.$(VXCPU) + +FLAGS = -Wall -g -Isrc -Isrc/include -D_REENTRANT=1 +#FLAGS = -Wall -O2 -Isrc -Isrc/include -D_REENTRANT=1 + +FLAGS += $(DEFINE_CC) $(CC_ARCH_SPEC) -MD -MP -D_VX_CPU=_VX_$(CPU) -D_VX_TOOL_FAMILY=gnu -D_VX_TOOL=$(TOOL) +ifeq ($(VXTYPE),RTP) +FLAGS += -mrtp -fpic -I$(WIND_USR)/h -I$(WIND_USR)/h/wrn/coreip +else +FLAGS += -D_WRS_KERNEL -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip +endif + +ifeq ($(VXTYPE),RTP) +ifeq ($(CPU),SH32) +LIB_LDFLAGS += -L$(WIND_USR)/lib/sh/SH32/commonle/PIC +else +LIB_LDFLAGS += $(LD_LINK_PATH_ATEND) $(LD_PARTIAL_LAST_FLAGS) +endif +endif + +OBJS = c14n.o catalog.o chvalid.o \ + debugXML.o dict.o DOCBparser.o \ + encoding.o entities.o error.o \ + globals.o \ + hash.o \ + legacy.o list.o \ + parser.o parserInternals.o pattern.o \ + relaxng.o \ + SAX2.o SAX.o schematron.o \ + threads.o tree.o \ + uri.o \ + valid.o \ + xinclude.o xlink.o xmlcatalog.o xmlIO.o \ + xmlmemory.o xmlmodule.o xmlreader.o xmlregexp.o \ + xmlsave.o xmlschemas.o xmlschemastypes.o xmlstring.o \ + xmlunicode.o xmlwriter.o xpath.o xpointer.o + +all : lib$(NAME).so + +init : + mkdir -p objs + +.PHONY : lib$(NAME).so + +lib$(NAME).so : init $(patsubst %.o, objs/%.o, $(OBJS)) + $(CC) $(FLAGS) $(LIB_LDFLAGS) -shared -o $@ $(patsubst %.o, objs/%.o, $(OBJS)) + +(NAME).out : init $(patsubst %.o, objs/%.o, $(OBJS)) + $(CC) $(FLAGS) -o $@ $(patsubst %.o, objs/%.o, $(OBJS)) + +objs/%.o: src/%.c + $(CC) $(FLAGS) -o $@ -c $< + +clean: + rm -fR *.so objs
diff --git a/libxml2-2.7.7/VxWorks/README b/libxml2-2.7.7/VxWorks/README new file mode 100644 index 0000000..b756677 --- /dev/null +++ b/libxml2-2.7.7/VxWorks/README
@@ -0,0 +1,86 @@ + libxml2 on VxWorks 6.4+ + +Here are my instructions for building on VxWorks.... I am very ashamed of +how I did this because it is a complete hack, but it works great, so I +can't complain too much. + +General Information + +1. The only way to build for VxWorks is to cross compile from a windows or +linux system. We use a RedHat 5.1 workstation system as our build +environment. + +2. VxWorks 6.X has two main types of executable, DKMs (dynamic kernel +modules), and RTPs (real-time processes). Kernel modules are the bread +and butter of VxWorks, but they look nothing like processes/threads in +normal UNIX/Windows systems. RTPs are more like processes that have +memory protection, threads, etc. VxWorks 6.X also introduces some level +of POSIX conformance to their environment. The POSIX conformance was the +key for us to be able to port libxml2. We support accessing libxml2 from +both DKMs and RTPs. + +3. There are 2 compilers for VxWorks, the WindRiver compiler, and a port +of the GNU toolchain, we have only tested and built with the GNU +toolchain. + +How To Build + +1. Run the configure on your native linux system (this is the cheesy +hack). Since the VxWorks GNU toolchain is very close in version to the +one in red hat, it generates a good config.h file. We configured libxml2 +with the following to keep the size down, (but we have done basic testing +with everything compiled in). + +./configure --with-minimum --with-reader --with-writer --with-regexps +--with-threads --with-thread-alloc + +2. Rename the libxml2 folder to "src". This step is required for our +replacement makefile to work. + +3. Run the replacement makefile. I wrote a new makefile that sets all the +proper vxworks defines and uses the correct compilers. The two defines on +the make command line are to tell it which VxWorks Target (SH3.2 little +endian), and the executable type. We have tested this code on PENTIUM2gnu +and SH32gnule. + +This makefile creates a shared library that runs on VxWorks: (libxml2.so) +make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=RTP + +This makefile creates a kernel module that runs on VxWorks: (xml2.out) +make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=DKM + +Important Notes + +1. There are several ways that this process could be improved, but at the +end of the day, we make products, not port libraries, so we did a meets +minimum for our needs. + +2. VxWorks is the devil, give me embedded linux every day. + +3. No matter what I tried, I couldn't get the configure to pick up the +VxWorks toolchain, and in my investigation, it has something to do with +automake/autoconf, not any individual package. VxWorks doesn't play by +the normal rules for building toolchains. + +4. The PIC flag in VxWorks (especially for SH processors) is very +important, and very troublesome. On linux, you can liberally use the PIC +flag when compiling and the compiler/linker will ignore it as needed, on +VxWorks if must always be on for shared libraries, and always be off for +static libraries and executables. + +5. If anyone wants to work on a better way to do the build of libxml2 for +VxWorks, I'm happy to help as much as I can, but I'm not looking to +support it myself. + +Attached Files + +1. To use my Makefile for vxworks, you should enter the vxworks +environment (/opt/windriver/wrenv.linux -p vxworks-6.4 for me). +2. Run: build.sh libxml2-2.6.32 SH32gnule RTP (where you have +libxml2-2.6.32.tar.gz and the Makefile in the same directory as the script +file). + +Thanks, + +Jim Wert Jr. +JWert@ILSTechnology.com
diff --git a/libxml2-2.7.7/VxWorks/build.sh b/libxml2-2.7.7/VxWorks/build.sh new file mode 100644 index 0000000..c195062 --- /dev/null +++ b/libxml2-2.7.7/VxWorks/build.sh
@@ -0,0 +1,85 @@ +LIBXML2=$1 +TARGETCPU=$2 +TARGETTYPE=$3 + +if [ -z "$2" ]; then + TARGETCPU=SIMPENTIUMgnu +fi + +if [ -z "$3" ]; then + TARGETTYPE=RTP +fi + +echo "LIBXML2 Version: ${LIBXML2}" +echo "LIBXML2 Target CPU: ${TARGETCPU}" +echo "LIBXML2 Target Type: ${TARGETTYPE}" + +rm -fR src +tar xvzf ${LIBXML2}.tar.gz +mv ${LIBXML2} src +cd src + +./configure --with-minimum --with-reader --with-writer --with-regexps --with-threads --with-thread-alloc + +find . -name '*.in' -exec rm -fR {} + +find . -name '*.am' -exec rm -fR {} + +rm -fR *.m4 +rm -fR *.pc +rm -fR *.pl +rm -fR *.py +rm -fR *.spec +rm -fR .deps +rm -fR AUTHORS +rm -fR bakefile +rm -fR ChangeLog +rm -fR config.guess +rm -fR config.log +rm -fR config.status +rm -fR config.stub +rm -fR config.sub +rm -fR configure +rm -fR COPYING +rm -fR Copyright +rm -fR depcomp +rm -fR doc +rm -fR example +rm -fR INSTALL +rm -fR install-sh +rm -fR libxml.3 +rm -fR ltmain.sh +rm -fR Makefile +rm -fR Makefile.tests +rm -fR macos +rm -fR mkinstalldirs +rm -fR missing +rm -fR nanoftp.c +rm -fR nanohttp.c +rm -fR NEWS +rm -fR python +rm -fR README +rm -fR README.tests +rm -fR regressions.xml +rm -fR result +rm -fR runsuite.c +rm -fR runtest.c +rm -fR test +rm -fR test*.c +rm -fR TODO* +rm -fR trio* +rm -fR vms +rm -fR win32 +rm -fR xml2* +rm -fR xmllint.c +rm -fR xstc + +cd .. + +make clean all VXCPU=${TARGETCPU} VXTYPE=${TARGETTYPE} + +if [ "${TARGETTYPE}" = "RTP" ]; then + cp libxml2.so ../../lib/. +else + cp xml2.out ../../bin/. +fi + +cp -R src/include/libxml ../../include/. \ No newline at end of file
diff --git a/libxml2-2.7.7/acconfig.h b/libxml2-2.7.7/acconfig.h new file mode 100644 index 0000000..dedcf1d --- /dev/null +++ b/libxml2-2.7.7/acconfig.h
@@ -0,0 +1,16 @@ +#undef PACKAGE +#undef VERSION +#undef HAVE_LIBZ +#undef HAVE_LIBM +#undef HAVE_ISINF +#undef HAVE_ISNAN +#undef HAVE_LIBHISTORY +#undef HAVE_LIBREADLINE +#undef HAVE_LIBPTHREAD +#undef HAVE_PTHREAD_H + +/* Define if IPV6 support is there */ +#undef SUPPORT_IP6 + +/* Define if getaddrinfo is there */ +#undef HAVE_GETADDRINFO
diff --git a/libxml2-2.7.7/acinclude.m4 b/libxml2-2.7.7/acinclude.m4 new file mode 100644 index 0000000..4ff672e --- /dev/null +++ b/libxml2-2.7.7/acinclude.m4
@@ -0,0 +1,28 @@ +dnl Like AC_TRY_EVAL but also errors out if the compiler generates +dnl _any_ output. Some compilers might issue warnings which we want +dnl to catch. +AC_DEFUN([AC_TRY_EVAL2], +[{ (eval echo configure:__oline__: \"[$]$1\") 1>&AC_FD_CC; dnl +(eval [$]$1) 2>&AC_FD_CC; _out=`eval [$]$1 2>&1` && test "x$_out" = x; }]) + +dnl Like AC_TRY_COMPILE but calls AC_TRY_EVAL2 instead of AC_TRY_EVAL +AC_DEFUN([AC_TRY_COMPILE2], +[cat > conftest.$ac_ext <<EOF +[#]line __oline__ "configure" +#include "confdefs.h" +[$1] +int main(void) { +[$2] +; return 0; } +EOF +if AC_TRY_EVAL2(ac_compile); then + ifelse([$3], , :, [rm -rf conftest* + $3]) +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&AC_FD_CC +ifelse([$4], , , [ rm -rf conftest* + $4 +])dnl +fi +rm -f conftest*])
diff --git a/libxml2-2.7.7/aclocal.m4 b/libxml2-2.7.7/aclocal.m4 new file mode 100644 index 0000000..d12d086 --- /dev/null +++ b/libxml2-2.7.7/aclocal.m4
@@ -0,0 +1,995 @@ +# generated automatically by aclocal 1.11.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, +[m4_warning([this file was generated for autoconf 2.63. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 10 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 16 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +AC_DEFUN([AM_C_PROTOTYPES], +[AC_REQUIRE([AC_C_PROTOTYPES]) +if test "$ac_cv_prog_cc_stdc" != no; then + U= ANSI2KNR= +else + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. +AC_REQUIRE([AC_HEADER_STDC]) +AC_CHECK_HEADERS([string.h]) +AC_SUBST([U])dnl +AC_SUBST([ANSI2KNR])dnl +_AM_SUBST_NOTMAKE([ANSI2KNR])dnl +]) + +AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([acinclude.m4])
diff --git a/libxml2-2.7.7/bakefile/Bakefiles.bkgen b/libxml2-2.7.7/bakefile/Bakefiles.bkgen new file mode 100644 index 0000000..8342de3 --- /dev/null +++ b/libxml2-2.7.7/bakefile/Bakefiles.bkgen
@@ -0,0 +1,15 @@ +<?xml version="1.0" ?> +<!-- $Id$ --> + +<bakefile-gen> + + <disable-formats>gnu,dmars,cbx_unix,cbuilderx</disable-formats> + <input>libxml2.bkl</input> + + <!-- List of output formats to generate: --> + <add-formats> + borland,dmars,mingw,msvc,msvc6prj,watcom,cbuilderx,cbx_unix,gnu + </add-formats> + + +</bakefile-gen> \ No newline at end of file
diff --git a/libxml2-2.7.7/bakefile/Readme.txt b/libxml2-2.7.7/bakefile/Readme.txt new file mode 100644 index 0000000..98a9ca8 --- /dev/null +++ b/libxml2-2.7.7/bakefile/Readme.txt
@@ -0,0 +1,92 @@ + + LIBXML2 build system for Win32 README + ------------------------------------- + + In this folder are stored all the files required to compile LIBXML2 with win32 compilers. + Bakefile (http://bakefile.sourceforge.net) is used as makefile generator. + + Supported makefiles: + - makefile.vc for Microsoft NMAKE + - makefile.bcc for Borland MAKE + - makefile.wat for OpenWatcom MAKE + - makefile.gcc for MinGW MINGW32-MAKE + - all DSP & DSW for Microsoft VisualC++ 6.0 (can be used also with VS.NET AFAIK) + + This readme is organized as: + 1.0 HOWTO compile LIBXML2 using makefiles <-- for users who want to build the library using *command-line* + 1.1 HOWTO compile LIBXML2 using an IDE <-- for users who want to build the library using an *IDE* + 1.2 HOWTO regenerate makefiles for LIBXML2 <-- for libxml2 mantainers/developers/advanced users + + If you just want to compile the library (and the test programs) you should definitely avoid the + section 1.1 and focus on the 1.0. + + + + + + + 1.0 HOWTO compile LIBXML2 using makefiles + ----------------------------------------- + + Choose your preferred compiler among those actually supported (see above) and then run + + mycompilermake -fmakefile.makefileext [options] + + for a full list of the available options you should open with a notepad (or something like that) + the makefile you want to use; at the beginning you should see a section which starts as: + + # ------------------------------------------------------------------------- + # These are configurable options: + # ------------------------------------------------------------------------- + + here you can find all the options actually used by that makefile. + They can be customized when running the makefile writing something like: + + nmake -fmakefile.vc BUILD=release + mingw32-make -fmakefile.gcc BUILD=debug ICONV_DIR=c:\myiconv + + or they can be permanently changed modifying the makefile. + That's all: for any problem/compile-error/suggestion, write to + frm@users.sourceforge.net with the word "libxml2" in the subject. + + + + + + 1.1 HOWTO compile LIBXML2 using an IDE + -------------------------------------- + + Actually only the Microsoft VisualC++ 6.0 project files are generated. + In future other Integrated Development Environments (IDEs) will be supported as well. + + With MSVC++ 6.0, you should open the DSW file and then set as the active project the + "libxml2" project, if you want to build the library or one of the test projects if you + want to run them. + Using the command "Build->Set Active Configuration" you can choose one of the predefined + configuration. + + + + + + 1.2 HOWTO regenerate makefiles for LIBXML2 + ------------------------------------------ + + Be sure to have installed Bakefile (http://bakefile.sourceforge.net). + Just run the "bakefile_gen" command inside the folder containing the "libxml2.bkl" file. + NOTE: if you want to remove all the makefiles, you can use the "bakefile_gen -c" command. + + The template files used to generate all makefiles are only two: + - libxml2.bkl (the main one) + - Bakefiles.bkgen + All the other files can be dinamically regenerated. + + + + + + If you have problems with the compilation of LIBXML2 under windows (using one of the supported compiler) + please write to: + + Francesco Montorsi <frm@users.sourceforge.net> +
diff --git a/libxml2-2.7.7/bakefile/libxml2.bkl b/libxml2-2.7.7/bakefile/libxml2.bkl new file mode 100644 index 0000000..f314465 --- /dev/null +++ b/libxml2-2.7.7/bakefile/libxml2.bkl
@@ -0,0 +1,749 @@ +<?xml version="1.0" ?> + +<!-- Author: Francesco Montorsi <frm@users.sourceforge.net> --> +<!-- Date: 30/8/2004 --> +<!-- Last revision: 26/1/2005 --> + + +<!-- LIBXML2 BAKEFILE --> +<!-- --> +<!-- The bakefile used to build the library and the test --> +<!-- programs. The makefiles output is put: --> +<!-- --> +<!-- - in the ..\LIB folder --> +<!-- - in the ..\BIN folder --> +<!-- --> + +<makefile> + + <using module="datafiles"/> + <requires version="0.1.5"/> + + + <!-- This is a bakefile, that is, a generic template used to --> + <!-- generate makefiles ALL supported compilers. --> + <!-- To use this project file you need Bakefile installed. --> + <!-- With the command "bakefile_gen" you can regen all the --> + <!-- makefiles and project files. --> + <!-- See http://bakefile.sourceforge.net for more info. --> + + + <!-- + This file is divided in: + - generic options + - generic variables + - libxml2 options + - libxml2 variables + - about config.h creation + - templates + - libxml2 library target + - libxml2 test program targets + --> + + + + <!-- --> + <!-- GENERIC OPTIONS --> + <!-- --> + + + <!-- This is a standard option that determines --> + <!-- whether the user wants to build this library as --> + <!-- a dll or as a static library. --> + <option name="SHARED"> + <values>0,1</values> + <values-description>,DLL</values-description> + <default-value>0</default-value> + <description>If set to zero a STATIC libxml library will be built</description> + </option> + + <!-- Configuration for building the bakefile with --> + <!-- unicode strings or not (unicode or ansi). --> + <option name="UNICODE"> + <values>0,1</values> + <values-description>,Unicode</values-description> + <default-value>0</default-value> + <description>Compile Unicode build?</description> + </option> + + + <!-- There are several options that deal with build --> + <!-- types. First, there's this one, BUILD. --> + <!-- --> + <!-- BUILD determines whether or not we want to build --> + <!-- in release or debug mode. Note that in practice --> + <!-- this means modifying the optimize tag, which by --> + <!-- default is set to off. In this case debug means --> + <!-- off (no optimizations), and release means speed --> + <!-- (fast with inlining). There is also a size option --> + <!-- that is not addressed in this example bakefile. --> + <option name="BUILD"> + <values>debug,release</values> + <values-description>Debug,Release</values-description> + <default-value>release</default-value> + <description> + Type of compiled binaries + </description> + </option> + + + + <!-- --> + <!-- GENERIC VARIABLES --> + <!-- --> + + <!-- Set the ISDLL variable, so that we can use it --> + <!-- inside an if statement later on (options not --> + <!-- allowed in if statements). --> + <set var="ISDLL" cond="SHARED=='1'">1</set> + <set var="ISDLL" cond="SHARED=='0'">0</set> + + <!-- The unicode define we want. By default bakefile --> + <!-- makes variables an empty string, so if unicode --> + <!-- is not defined $(UNICODE_DEFINE) would expand --> + <!-- to nothing (literally). --> + <set var="UNICODE_DEFINE"> + <if cond="FORMAT!='autoconf' and UNICODE=='1'">_UNICODE</if> + </set> + + <!-- The debug define we need with win32 compilers --> + <!-- (on Linux, the wx-config program is used). --> + <set var="DEBUG_DEFINE"> + <if cond="FORMAT!='autoconf' and BUILD=='debug'"> + __WXDEBUG__ + </if> + </set> + + <!-- Value we will use later on for the debug-info --> + <!-- tag inside our templates. --> + <set var="DEBUGINFO"> + <if cond="BUILD=='debug'">on</if> + <if cond="BUILD=='release'">off</if> + </set> + + <!-- Value we will use later on for the debug-runtime --> + <!-- tag inside our templates. --> + <set var="DEBUGRUNTIME"> + <if cond="BUILD=='debug'">on</if> + <if cond="BUILD=='release'">off</if> + </set> + + <!-- Value for optimize tag. --> + <set var="OPTIMIZEFLAG"> + <if cond="BUILD=='debug'">off</if> + <if cond="BUILD=='release'">speed</if> + </set> + + <!-- Level of warnings. Here we max it out in debug --> + <!-- mode, and turn them off in release mode. --> + <set var="WARNINGS"> + <if cond="BUILD=='debug'">max</if> + <if cond="BUILD=='release'">no</if> + </set> + + <!-- Set MYCPPFLAGS as empty; maybe it will be filled later... --> + <set var="MYCPPFLAGS"></set> + <if cond="FORMAT=='mingw' or FORMAT=='autoconf'"> + + <!-- With GCC, settings warnings to MAX would force --> + <!-- Bakefile to call GCC with "-W -Wall" which generates --> + <!-- a *lot* of warnings about wxWidgets headers... --> + <!-- this is why "-W -Wall" is here replaced by "-Wall". --> + <set var="WARNINGS">default</set> + <set var="MYCPPFLAGS">-Wall</set> + </if> + + + + + + + <!-- --> + <!-- LIBXML2 OPTIONS --> + <!-- --> + <!-- Note #1: not all of them are used by win32 makefiles --> + <!-- --> + <!-- Note #2: since all combinations of non-path options are --> + <!-- translated into different 'configurations' by --> + <!-- Bakefile when using the MSVC6PRJ output, we must --> + <!-- avoid to create a 10 MB libxml2.dsp file forcing --> + <!-- some options to their default values... this --> + <!-- behaviour can be overridden by the --> + <!-- FULL_OPTIONS_SUPPORT --> + <!-- variable defined below... --> + + <set var="FULL_OPTIONS_SUPPORT"> + <if cond="FORMAT=='msvc6prj'">0</if> + <if cond="FORMAT!='msvc6prj'">1</if> + </set> + + <option name="ICONV_DIR" category="path"> + <default-value>c:\iconv</default-value> + <description>The iconv library main folder</description> + </option> + + <option name="WITH_TRIO"> + <values>0,1</values> + <default-value>0</default-value> + <description>Enable TRIO string manipulator</description> + </option> + + <!-- see the note #2 --> + <if cond="FULL_OPTIONS_SUPPORT=='0'"> + <set var="WITH_THREADS">native</set> + </if> + <if cond="FULL_OPTIONS_SUPPORT=='1'"> + <option name="WITH_THREADS"> + <values>no,ctls,native,posix</values> + <default-value>native</default-value> + <description>Enable thread safety</description> + </option> + </if> + + <option name="WITH_FTP"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable FTP client</description> + </option> + + <option name="WITH_HTTP"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable HTTP client</description> + </option> + + <option name="WITH_C14N"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable C14N support</description> + </option> + + <option name="WITH_CATALOG"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable catalog support</description> + </option> + + <option name="WITH_DOCB"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable DocBook support</description> + </option> + + <option name="WITH_XPATH"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable XPath support</description> + </option> + + <option name="WITH_XPTR"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable XPointer support</description> + </option> + + <option name="WITH_XINCLUDE"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable XInclude support</description> + </option> + + <!-- see the note #2 --> + <if cond="FULL_OPTIONS_SUPPORT=='0'"> + <set var="WITH_ICONV">1</set> + </if> + <if cond="FULL_OPTIONS_SUPPORT=='1'"> + <option name="WITH_ICONV"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable iconv support</description> + </option> + </if> + + <option name="WITH_ISO8859X"> + <values>0,1</values> + <default-value>0</default-value> + <description>Enable iso8859x support</description> + </option> + + <!-- see the note #2 --> + <if cond="FULL_OPTIONS_SUPPORT=='0'"> + <set var="WITH_ZLIB">0</set> + </if> + <if cond="FULL_OPTIONS_SUPPORT=='1'"> + <option name="WITH_ZLIB"> + <values>0,1</values> + <default-value>0</default-value> + <description>Enable ZLIB support</description> + </option> + </if> + + <option name="WITH_REGEXPS"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable regular expressions</description> + </option> + + <option name="WITH_TREE"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable tree api</description> + </option> + + <option name="WITH_READER"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable xmlReader api</description> + </option> + + <option name="WITH_WRITER"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable xmlWriter api</description> + </option> + + <option name="WITH_WALKER"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable xmlDocWalker api</description> + </option> + + <option name="WITH_PATTERN"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable xmlPattern api</description> + </option> + + <option name="WITH_PUSH"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable push api</description> + </option> + + <option name="WITH_VALID"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable DTD validation support</description> + </option> + + <option name="WITH_SAX1"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable SAX1 api</description> + </option> + + <option name="WITH_SCHEMAS"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable XML Schema support</description> + </option> + + <option name="WITH_LEGACY"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable deprecated APIs</description> + </option> + + <option name="WITH_OUTPUT"> + <values>0,1</values> + <default-value>1</default-value> + <description>Enable serialization support</description> + </option> + + <option name="WITH_PYTHON"> + <values>0,1</values> + <default-value>0</default-value> + <description>Build Python bindings</description> + </option> + + + + + <!-- --> + <!-- LIBXML2 VARIABLES --> + <!-- --> + + <!-- Put all the objects files generated by --> + <!-- the compilation in a subfolder of BUILD --> + <set var="BUILDDIR">$(FORMAT)</set> + + <!-- This variable is set to 1 when the current output writer supports --> + <!-- the __DEFINE_ARG variable. Otherwise it's set to zero. --> + <set var="HAS_DEFINE_ARG"> + <if cond="FORMAT!='msvc6prj'">1</if> + <if cond="FORMAT=='msvc6prj'">0</if> + </set> + + <!-- The root directory of libxml2 --> + <set var="XMLBASEDIR">..</set> + + <!-- The directory where libxml2' tests will be put --> + <set var="XMLTESTDIR">$(XMLBASEDIR)$(DIRSEP)bin</set> + + <set var="LIBXML_MAJOR_VERSION">2</set> + <set var="LIBXML_MINOR_VERSION">6</set> + <set var="LIBXML_MICRO_VERSION">16</set> + + <!-- some defines related to threads --> + <set var="THREADS_DEF"> + <if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='native'"> + $(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS + </if> + <if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='ctls'"> + $(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS $(__DEFINE_ARG)HAVE_COMPILER_TLS + </if> + <if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='posix'"> + $(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_PTHREAD_H + </if> + </set> + <if cond="FORMAT=='borland'"> + <set var="THREADS_DEF"> + <if cond="WITH_THREADS=='native'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if> + <if cond="WITH_THREADS=='ctls'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if> + <if cond="WITH_THREADS=='posix'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if> + </set> + </if> + + + <!-- some other conditional defines --> + <set var="ZLIB_DEF"><if cond="WITH_ZLIB=='1'">HAVE_ZLIB_H</if></set> + <set var="DEBUG_DEF"><if cond="BUILD=='debug'">_DEBUG</if></set> + <set var="DEBUG_DEF"><if cond="BUILD=='release'">NDEBUG</if></set> + + <!-- this is very very important when compiling with MINGW: without this line, + the test programs (and all the programs built with libxml2 which use xmlFree) + won't build because of "undefined references to __xmlFree" --> + <set var="STATIC_DEF"><if cond="SHARED=='0'">LIBXML_STATIC</if></set> + + <!-- some conditional libraries dependencies --> + <set var="ICONV_LIB"><if cond="WITH_ICONV=='1'">iconv</if></set> + <set var="WSOCK32_LIB"><if cond="WITH_THREADS=='native'">wsock32</if></set> + <set var="ZLIB_LIB"><if cond="WITH_ZLIB=='1'">zdll</if></set> + <set var="POSIX_LIB"><if cond="WITH_THREADS=='posix'">pthreadVC</if></set> + + <set var="XMLINCLUDEDIR">$(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)libxml$(DIRSEP)</set> + + + + + <!-- --> + <!-- ABOUT CONFIG.H HEADER CREATION --> + <!-- --> + + <set var="CONFIG_SRCNAME">win32config.h</set> + <set var="CONFIG_DSTNAME">config.h</set> + + <if cond="FORMAT!='msvc6prj' and FORMAT!='autoconf' and FORMAT!='gnu'"> + <copy-file-to-file id="setup"> + <!-- On win32 we need to manually copy a default config.h file --> + <!-- from the include/mc/msw folder to include/mc --> + <src>../include/$(CONFIG_SRCNAME)</src> + <dst>../$(CONFIG_DSTNAME)</dst> + <dependency-of>all</dependency-of> + + <!-- With autoconf, we will use the configure script to translate --> + <!-- include/mc/config.h.in to include/mc/config.h and thus we do --> + <!-- not need to do anything here... --> + </copy-file-to-file> + </if> + + <if cond="FORMAT!='msvc6prj'"> + + <mkdir id="setuplibdir"><dir>$(XMLBASEDIR)$(DIRSEP)lib</dir></mkdir> + <mkdir id="setupbindir"><dir>$(XMLBASEDIR)$(DIRSEP)bin</dir></mkdir> + + <!-- Creates all output folders --> + <phony id="setupdirs"> + <dependency-of>all</dependency-of> + <depends>setuplibdir</depends> + <depends>setupbindir</depends> + </phony> + </if> + + <!-- This defines a tag which includes headers on MSVC --> + <!-- Note that $(value) is stuck in there by bakefile, --> + <!-- and is the value between the beginning and end tag. --> + <define-tag name="headers" rules="dll,lib,exe"> + <if cond="FORMAT=='msvc6prj'"> + <msvc-project-files> + $(value) + </msvc-project-files> + </if> + </define-tag> + + <!-- Creates the following custom build rule for MSVC6PRJ file: + copies ..\include\win32config.h into ..\config.h + NOTE: this tag must be used before the <sources> tag if you want that the configuration + file will be created before any other source file is compiled... --> + <define-tag name="msvc-copy-setup-h" rules="dll,lib,action"> + <if cond="FORMAT=='msvc6prj'"> + <headers>$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</headers> + <set var="__subdir">$(value)</set> + <set var="_custom_build_files" append="1">$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</set> + <set var="_custom_build____include_win32config_h"> +Creating the configuration file ..\$(CONFIG_DSTNAME) from ..\include\$(CONFIG_SRCNAME) +InputPath=..\include\$(CONFIG_SRCNAME) + +"..\$(CONFIG_DSTNAME)" : $(DOLLAR)(SOURCE) "$(DOLLAR)(INTDIR)" "$(DOLLAR)(OUTDIR)" +$(TAB)copy "$(DOLLAR)(InputPath)" ..\$(CONFIG_DSTNAME) + </set> + </if> + </define-tag> + + + + + + <!-- --> + <!-- TEMPLATES --> + <!-- --> + + <!-- The basic template: used by all the targets --> + <template id="base"> + <if cond="FORMAT=='mingw'"> + <define>HAVE_W32API_H</define> + <ldflags>-mthreads</ldflags> + </if> + + <cxxflags>$(MYCPPFLAGS)</cxxflags> + <warnings>$(WARNINGS)</warnings> + <define>$(UNICODE_DEFINE)</define> + <optimize>$(OPTIMIZEFLAG)</optimize> + <debug-info>$(DEBUGINFO)</debug-info> + <debug-runtime-libs>$(DEBUGRUNTIME)</debug-runtime-libs> + </template> + + <!-- The template used both by the library and by the test programs --> + <template id="xml2" template="base"> + + <!-- -I & -L equivalents --> + <include>$(XMLBASEDIR)$(DIRSEP)include</include> + <include>$(ICONV_DIR)$(DIRSEP)include</include> + <lib-path>$(ICONV_DIR)$(DIRSEP)lib</lib-path> + + <!-- some conditional define flags --> + <cflags>$(THREADS_DEF)</cflags> + <define>$(ZLIB_DEF)</define> + <define>$(DEBUG_DEF)</define> + <define>$(STATIC_DEF)</define> + + <if cond="HAS_DEFINE_ARG=='0'"> + + <!-- we are probably using an IDE output: defaults to WITH_THREADS=='native' --> + <define>_REENTRANT</define> + <define>HAVE_WIN32_THREADS</define> + </if> + + + <!-- these must always be defined on win32 --> + <define>WIN32</define> + <define>_WINDOWS</define> + <define>_MBCS</define> + + <if cond="FORMAT=='borland'"> + <define>_NO_VCL</define> + <define>EILSEQ=2</define> + </if> + </template> + + <!-- The template used by libxml2 test programs --> + <template id="xml2test" template="xml2"> + <dirname>$(XMLTESTDIR)</dirname> + <app-type>console</app-type> + + <library>libxml2</library> + + <sys-lib>$(ICONV_LIB)</sys-lib> + <sys-lib>$(WSOCK32_LIB)</sys-lib> + <sys-lib>$(ZLIB_LIB)</sys-lib> + <sys-lib>$(POSIX_LIB)</sys-lib> + </template> + + + + + + + <!-- --> + <!-- LIBXML2 LIBRARY TARGET --> + <!-- --> + + <lib id="libxml2" template="xml2"> + + <!-- this is useful only when using MSVC6PRJ --> + <if cond="FORMAT=='msvc6prj'"> + <msvc-copy-setup-h/> + <msvc-file-group>Config headers:*config.h</msvc-file-group> + </if> + <if cond="FORMAT!='msvc6prj'"> + <depends>setup</depends> + <depends>setuplibdir</depends> + </if> + + <!-- output folder --> + <dirname>$(XMLBASEDIR)$(DIRSEP)lib</dirname> + + <!-- The output name must be "libxml2.lib" with all compilers. + Since mingw format autoadds the "lib" prefix to the library + name, we must intercept that case to avoid to get "liblibxml2.a" --> + <if cond="FORMAT!='mingw'"> + <libname>libxml2</libname> + </if> + <if cond="FORMAT=='mingw'"> + <libname>xml2</libname> + </if> + + <!-- the list of source files to compile --> + <sources> + $(XMLBASEDIR)$(DIRSEP)c14n.c + $(XMLBASEDIR)$(DIRSEP)catalog.c + $(XMLBASEDIR)$(DIRSEP)chvalid.c + $(XMLBASEDIR)$(DIRSEP)debugXML.c + $(XMLBASEDIR)$(DIRSEP)dict.c + $(XMLBASEDIR)$(DIRSEP)DOCBparser.c + $(XMLBASEDIR)$(DIRSEP)encoding.c + $(XMLBASEDIR)$(DIRSEP)entities.c + $(XMLBASEDIR)$(DIRSEP)error.c + $(XMLBASEDIR)$(DIRSEP)globals.c + $(XMLBASEDIR)$(DIRSEP)hash.c + $(XMLBASEDIR)$(DIRSEP)HTMLparser.c + $(XMLBASEDIR)$(DIRSEP)HTMLtree.c + $(XMLBASEDIR)$(DIRSEP)legacy.c + $(XMLBASEDIR)$(DIRSEP)list.c + $(XMLBASEDIR)$(DIRSEP)nanoftp.c + $(XMLBASEDIR)$(DIRSEP)nanohttp.c + $(XMLBASEDIR)$(DIRSEP)parser.c + $(XMLBASEDIR)$(DIRSEP)parserInternals.c + $(XMLBASEDIR)$(DIRSEP)pattern.c + $(XMLBASEDIR)$(DIRSEP)relaxng.c + $(XMLBASEDIR)$(DIRSEP)SAX2.c + $(XMLBASEDIR)$(DIRSEP)SAX.c + $(XMLBASEDIR)$(DIRSEP)threads.c + $(XMLBASEDIR)$(DIRSEP)tree.c + $(XMLBASEDIR)$(DIRSEP)uri.c + $(XMLBASEDIR)$(DIRSEP)valid.c + $(XMLBASEDIR)$(DIRSEP)xinclude.c + $(XMLBASEDIR)$(DIRSEP)xlink.c + $(XMLBASEDIR)$(DIRSEP)xmlIO.c + $(XMLBASEDIR)$(DIRSEP)xmlmemory.c + $(XMLBASEDIR)$(DIRSEP)xmlreader.c + $(XMLBASEDIR)$(DIRSEP)xmlregexp.c + $(XMLBASEDIR)$(DIRSEP)xmlsave.c + $(XMLBASEDIR)$(DIRSEP)xmlschemas.c + $(XMLBASEDIR)$(DIRSEP)xmlschemastypes.c + $(XMLBASEDIR)$(DIRSEP)xmlunicode.c + $(XMLBASEDIR)$(DIRSEP)xmlwriter.c + $(XMLBASEDIR)$(DIRSEP)xpath.c + $(XMLBASEDIR)$(DIRSEP)xpointer.c + $(XMLBASEDIR)$(DIRSEP)xmlstring.c + </sources> + + <!-- the list of header files (for IDE projects) --> + <headers> + $(XMLINCLUDEDIR)c14n.h + $(XMLINCLUDEDIR)catalog.h + $(XMLINCLUDEDIR)chvalid.h + $(XMLINCLUDEDIR)debugXML.h + $(XMLINCLUDEDIR)dict.h + $(XMLINCLUDEDIR)DOCBparser.h + $(XMLINCLUDEDIR)encoding.h + $(XMLINCLUDEDIR)entities.h + $(XMLINCLUDEDIR)globals.h + $(XMLINCLUDEDIR)hash.h + $(XMLINCLUDEDIR)HTMLparser.h + $(XMLINCLUDEDIR)HTMLtree.h + $(XMLINCLUDEDIR)list.h + $(XMLINCLUDEDIR)nanoftp.h + $(XMLINCLUDEDIR)nanohttp.h + $(XMLINCLUDEDIR)parser.h + $(XMLINCLUDEDIR)parserInternals.h + $(XMLINCLUDEDIR)pattern.h + $(XMLINCLUDEDIR)relaxng.h + $(XMLINCLUDEDIR)SAX.h + $(XMLINCLUDEDIR)SAX2.h + $(XMLINCLUDEDIR)schemasInternals.h + $(XMLINCLUDEDIR)threads.h + $(XMLINCLUDEDIR)tree.h + $(XMLINCLUDEDIR)uri.h + $(XMLINCLUDEDIR)valid.h + $(XMLINCLUDEDIR)xinclude.h + $(XMLINCLUDEDIR)xlink.h + $(XMLINCLUDEDIR)xmlautomata.h + $(XMLINCLUDEDIR)xmlerror.h + $(XMLINCLUDEDIR)xmlexports.h + $(XMLINCLUDEDIR)xmlIO.h + $(XMLINCLUDEDIR)xmlmemory.h + $(XMLINCLUDEDIR)xmlmodule.h + $(XMLINCLUDEDIR)xmlreader.h + $(XMLINCLUDEDIR)xmlregexp.h + $(XMLINCLUDEDIR)xmlsave.h + $(XMLINCLUDEDIR)xmlschemas.h + $(XMLINCLUDEDIR)xmlschemastypes.h + $(XMLINCLUDEDIR)xmlstring.h + $(XMLINCLUDEDIR)xmlunicode.h + $(XMLINCLUDEDIR)xmlversion.h + $(XMLINCLUDEDIR)xmlwriter.h + $(XMLINCLUDEDIR)xpath.h + $(XMLINCLUDEDIR)xpathInternals.h + $(XMLINCLUDEDIR)xpointer.h + </headers> + + <!-- these ones are not inside the include/libxml folder --> + <headers> + $(XMLBASEDIR)$(DIRSEP)libxml.h + $(XMLBASEDIR)$(DIRSEP)triodef.h + $(XMLBASEDIR)$(DIRSEP)trionan.h + $(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)wsockcompat.h + </headers> + </lib> + + + + <!-- --> + <!-- LIBXML2 test programs --> + <!-- --> + + <set var="BUILD_ALL_TESTS"> + + <!-- when using full options support with MSVC6PRJ we should + avoid to create all the DSP files required for the test + programs: they would take a _lot_ of space !! --> + <if cond="FORMAT=='msvc6prj' and FULL_OPTIONS_SUPPORT=='1'">0</if> + + <!-- when creating a makefile or using MSVC6PRJ with limited + options support, then we can build all the tests safely --> + <if cond="FORMAT!='msvc6prj' or FULL_OPTIONS_SUPPORT=='0'">1</if> + + </set> + + <if cond="BUILD_ALL_TESTS=='1'"> + + <exe id="testAutomata" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testAutomata.c</sources></exe> + <exe id="testC14N" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testC14N.c</sources></exe> + <exe id="testHTML" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testHTML.c</sources></exe> + <exe id="testReader" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testReader.c</sources></exe> + <exe id="testRegexp" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRegexp.c</sources></exe> + <exe id="testRelax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRelax.c</sources></exe> + <exe id="testSax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSax.c</sources></exe> + <exe id="testSchemas" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSchemas.c</sources></exe> + <exe id="testURI" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testURI.c</sources></exe> + <exe id="testXPath" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testXPath.c</sources></exe> + <exe id="xmllint" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)xmllint.c</sources></exe> + + <if cond="FORMAT=='autoconf'"> + <exe id="testdso" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testdso.c</sources></exe> + </if> + + <!-- FIXME: + <exe id="testModule" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testModule.c</sources></exe> + + <if cond="WITH_THREADS=='posix'"> + <exe id="testThreads" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreads.c</sources></exe> + </if> + <if cond="WITH_THREADS=='ctls' or WITH_THREADS=='native'"> + <exe id="testThreadsWin32" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreadsWin32.c</sources></exe> + </if> + --> + </if> + +</makefile>
diff --git a/libxml2-2.7.7/c14n.c b/libxml2-2.7.7/c14n.c new file mode 100644 index 0000000..9c3cad2 --- /dev/null +++ b/libxml2-2.7.7/c14n.c
@@ -0,0 +1,2235 @@ +/* + * "Canonical XML" implementation + * http://www.w3.org/TR/xml-c14n + * + * "Exclusive XML Canonicalization" implementation + * http://www.w3.org/TR/xml-exc-c14n + * + * See Copyright for the status of this software. + * + * Author: Aleksey Sanin <aleksey@aleksey.com> + */ +#define IN_LIBXML +#include "libxml.h" +#ifdef LIBXML_C14N_ENABLED +#ifdef LIBXML_OUTPUT_ENABLED + +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#include <string.h> + +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/uri.h> +#include <libxml/xmlerror.h> +#include <libxml/globals.h> +#include <libxml/xpathInternals.h> +#include <libxml/c14n.h> + +/************************************************************************ + * * + * Some declaration better left private ATM * + * * + ************************************************************************/ + +typedef enum { + XMLC14N_BEFORE_DOCUMENT_ELEMENT = 0, + XMLC14N_INSIDE_DOCUMENT_ELEMENT = 1, + XMLC14N_AFTER_DOCUMENT_ELEMENT = 2 +} xmlC14NPosition; + +typedef struct _xmlC14NVisibleNsStack { + int nsCurEnd; /* number of nodes in the set */ + int nsPrevStart; /* the begginning of the stack for previous visible node */ + int nsPrevEnd; /* the end of the stack for previous visible node */ + int nsMax; /* size of the array as allocated */ + xmlNsPtr *nsTab; /* array of ns in no particular order */ + xmlNodePtr *nodeTab; /* array of nodes in no particular order */ +} xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr; + +typedef struct _xmlC14NCtx { + /* input parameters */ + xmlDocPtr doc; + xmlC14NIsVisibleCallback is_visible_callback; + void* user_data; + int with_comments; + xmlOutputBufferPtr buf; + + /* position in the XML document */ + xmlC14NPosition pos; + int parent_is_doc; + xmlC14NVisibleNsStackPtr ns_rendered; + + /* C14N mode */ + xmlC14NMode mode; + + /* exclusive canonicalization */ + xmlChar **inclusive_ns_prefixes; + + /* error number */ + int error; +} xmlC14NCtx, *xmlC14NCtxPtr; + +static xmlC14NVisibleNsStackPtr xmlC14NVisibleNsStackCreate (void); +static void xmlC14NVisibleNsStackDestroy (xmlC14NVisibleNsStackPtr cur); +static void xmlC14NVisibleNsStackAdd (xmlC14NVisibleNsStackPtr cur, + xmlNsPtr ns, + xmlNodePtr node); +static void xmlC14NVisibleNsStackSave (xmlC14NVisibleNsStackPtr cur, + xmlC14NVisibleNsStackPtr state); +static void xmlC14NVisibleNsStackRestore (xmlC14NVisibleNsStackPtr cur, + xmlC14NVisibleNsStackPtr state); +static void xmlC14NVisibleNsStackShift (xmlC14NVisibleNsStackPtr cur); +static int xmlC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, + xmlNsPtr ns); +static int xmlExcC14NVisibleNsStackFind (xmlC14NVisibleNsStackPtr cur, + xmlNsPtr ns, + xmlC14NCtxPtr ctx); + +static int xmlC14NIsNodeInNodeset (xmlNodeSetPtr nodes, + xmlNodePtr node, + xmlNodePtr parent); + + + +static int xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur); +static int xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur); +typedef enum { + XMLC14N_NORMALIZE_ATTR = 0, + XMLC14N_NORMALIZE_COMMENT = 1, + XMLC14N_NORMALIZE_PI = 2, + XMLC14N_NORMALIZE_TEXT = 3 +} xmlC14NNormalizationMode; + +static xmlChar *xmlC11NNormalizeString(const xmlChar * input, + xmlC14NNormalizationMode mode); + +#define xmlC11NNormalizeAttr( a ) \ + xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_ATTR) +#define xmlC11NNormalizeComment( a ) \ + xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_COMMENT) +#define xmlC11NNormalizePI( a ) \ + xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_PI) +#define xmlC11NNormalizeText( a ) \ + xmlC11NNormalizeString((a), XMLC14N_NORMALIZE_TEXT) + +#define xmlC14NIsVisible( ctx, node, parent ) \ + (((ctx)->is_visible_callback != NULL) ? \ + (ctx)->is_visible_callback((ctx)->user_data, \ + (xmlNodePtr)(node), (xmlNodePtr)(parent)) : 1) + +#define xmlC14NIsExclusive( ctx ) \ + ( (ctx)->mode == XML_C14N_EXCLUSIVE_1_0 ) + +/************************************************************************ + * * + * Some factorized error routines * + * * + ************************************************************************/ + +/** + * xmlC14NErrMemory: + * @extra: extra informations + * + * Handle a redefinition of memory error + */ +static void +xmlC14NErrMemory(const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_ERR_NO_MEMORY, XML_ERR_ERROR, NULL, 0, extra, + NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); +} + +/** + * xmlC14NErrParam: + * @extra: extra informations + * + * Handle a redefinition of param error + */ +static void +xmlC14NErrParam(const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_ERR_INTERNAL_ERROR, XML_ERR_ERROR, NULL, 0, extra, + NULL, NULL, 0, 0, + "Invalid parameter : %s\n", extra); +} + +/** + * xmlC14NErrInternal: + * @extra: extra informations + * + * Handle a redefinition of internal error + */ +static void +xmlC14NErrInternal(const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_ERR_INTERNAL_ERROR, XML_ERR_ERROR, NULL, 0, extra, + NULL, NULL, 0, 0, + "Internal error : %s\n", extra); +} + +/** + * xmlC14NErrInvalidNode: + * @extra: extra informations + * + * Handle a redefinition of invalid node error + */ +static void +xmlC14NErrInvalidNode(const char *node_type, const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_C14N_INVALID_NODE, XML_ERR_ERROR, NULL, 0, extra, + NULL, NULL, 0, 0, + "Node %s is invalid here : %s\n", node_type, extra); +} + +/** + * xmlC14NErrUnknownNode: + * @extra: extra informations + * + * Handle a redefinition of unknown node error + */ +static void +xmlC14NErrUnknownNode(int node_type, const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_C14N_UNKNOW_NODE, XML_ERR_ERROR, NULL, 0, extra, + NULL, NULL, 0, 0, + "Unknown node type %d found : %s\n", node_type, extra); +} + +/** + * xmlC14NErrRelativeNamespace: + * @extra: extra informations + * + * Handle a redefinition of relative namespace error + */ +static void +xmlC14NErrRelativeNamespace(const char *ns_uri) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N, + XML_C14N_RELATIVE_NAMESPACE, XML_ERR_ERROR, NULL, 0, NULL, + NULL, NULL, 0, 0, + "Relative namespace UR is invalid here : %s\n", ns_uri); +} + + + +/** + * xmlC14NErr: + * @ctxt: a C14N evaluation context + * @node: the context node + * @error: the erorr code + * @msg: the message + * @extra: extra informations + * + * Handle a redefinition of attribute error + */ +static void +xmlC14NErr(xmlC14NCtxPtr ctxt, xmlNodePtr node, int error, + const char * msg) +{ + if (ctxt != NULL) + ctxt->error = error; + __xmlRaiseError(NULL, NULL, NULL, + ctxt, node, XML_FROM_C14N, error, + XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, "%s", msg); +} + +/************************************************************************ + * * + * The implementation internals * + * * + ************************************************************************/ +#define XML_NAMESPACES_DEFAULT 16 + +static int +xmlC14NIsNodeInNodeset(xmlNodeSetPtr nodes, xmlNodePtr node, xmlNodePtr parent) { + if((nodes != NULL) && (node != NULL)) { + if(node->type != XML_NAMESPACE_DECL) { + return(xmlXPathNodeSetContains(nodes, node)); + } else { + xmlNs ns; + + memcpy(&ns, node, sizeof(ns)); + + /* this is a libxml hack! check xpath.c for details */ + if((parent != NULL) && (parent->type == XML_ATTRIBUTE_NODE)) { + ns.next = (xmlNsPtr)parent->parent; + } else { + ns.next = (xmlNsPtr)parent; + } + + /* + * If the input is an XPath node-set, then the node-set must explicitly + * contain every node to be rendered to the canonical form. + */ + return(xmlXPathNodeSetContains(nodes, (xmlNodePtr)&ns)); + } + } + return(1); +} + +static xmlC14NVisibleNsStackPtr +xmlC14NVisibleNsStackCreate(void) { + xmlC14NVisibleNsStackPtr ret; + + ret = (xmlC14NVisibleNsStackPtr) xmlMalloc(sizeof(xmlC14NVisibleNsStack)); + if (ret == NULL) { + xmlC14NErrMemory("creating namespaces stack"); + return(NULL); + } + memset(ret, 0 , (size_t) sizeof(xmlC14NVisibleNsStack)); + return(ret); +} + +static void +xmlC14NVisibleNsStackDestroy(xmlC14NVisibleNsStackPtr cur) { + if(cur == NULL) { + xmlC14NErrParam("destroying namespaces stack"); + return; + } + if(cur->nsTab != NULL) { + memset(cur->nsTab, 0, cur->nsMax * sizeof(xmlNsPtr)); + xmlFree(cur->nsTab); + } + if(cur->nodeTab != NULL) { + memset(cur->nodeTab, 0, cur->nsMax * sizeof(xmlNodePtr)); + xmlFree(cur->nodeTab); + } + memset(cur, 0, sizeof(xmlC14NVisibleNsStack)); + xmlFree(cur); + +} + +static void +xmlC14NVisibleNsStackAdd(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlNodePtr node) { + if((cur == NULL) || + ((cur->nsTab == NULL) && (cur->nodeTab != NULL)) || + ((cur->nsTab != NULL) && (cur->nodeTab == NULL))) { + xmlC14NErrParam("adding namespace to stack"); + return; + } + + if ((cur->nsTab == NULL) && (cur->nodeTab == NULL)) { + cur->nsTab = (xmlNsPtr*) xmlMalloc(XML_NAMESPACES_DEFAULT * sizeof(xmlNsPtr)); + cur->nodeTab = (xmlNodePtr*) xmlMalloc(XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr)); + if ((cur->nsTab == NULL) || (cur->nodeTab == NULL)) { + xmlC14NErrMemory("adding node to stack"); + return; + } + memset(cur->nsTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNsPtr)); + memset(cur->nodeTab, 0 , XML_NAMESPACES_DEFAULT * sizeof(xmlNodePtr)); + cur->nsMax = XML_NAMESPACES_DEFAULT; + } else if(cur->nsMax == cur->nsCurEnd) { + void *tmp; + int tmpSize; + + tmpSize = 2 * cur->nsMax; + tmp = xmlRealloc(cur->nsTab, tmpSize * sizeof(xmlNsPtr)); + if (tmp == NULL) { + xmlC14NErrMemory("adding node to stack"); + return; + } + cur->nsTab = (xmlNsPtr*)tmp; + + tmp = xmlRealloc(cur->nodeTab, tmpSize * sizeof(xmlNodePtr)); + if (tmp == NULL) { + xmlC14NErrMemory("adding node to stack"); + return; + } + cur->nodeTab = (xmlNodePtr*)tmp; + + cur->nsMax = tmpSize; + } + cur->nsTab[cur->nsCurEnd] = ns; + cur->nodeTab[cur->nsCurEnd] = node; + + ++cur->nsCurEnd; +} + +static void +xmlC14NVisibleNsStackSave(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state) { + if((cur == NULL) || (state == NULL)) { + xmlC14NErrParam("saving namespaces stack"); + return; + } + + state->nsCurEnd = cur->nsCurEnd; + state->nsPrevStart = cur->nsPrevStart; + state->nsPrevEnd = cur->nsPrevEnd; +} + +static void +xmlC14NVisibleNsStackRestore(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state) { + if((cur == NULL) || (state == NULL)) { + xmlC14NErrParam("restoring namespaces stack"); + return; + } + cur->nsCurEnd = state->nsCurEnd; + cur->nsPrevStart = state->nsPrevStart; + cur->nsPrevEnd = state->nsPrevEnd; +} + +static void +xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) { + if(cur == NULL) { + xmlC14NErrParam("shifting namespaces stack"); + return; + } + cur->nsPrevStart = cur->nsPrevEnd; + cur->nsPrevEnd = cur->nsCurEnd; +} + +static int +xmlC14NStrEqual(const xmlChar *str1, const xmlChar *str2) { + if (str1 == str2) return(1); + if (str1 == NULL) return((*str2) == '\0'); + if (str2 == NULL) return((*str1) == '\0'); + do { + if (*str1++ != *str2) return(0); + } while (*str2++); + return(1); +} + +/** + * xmlC14NVisibleNsStackFind: + * @ctx: the C14N context + * @ns: the namespace to check + * + * Checks whether the given namespace was already rendered or not + * + * Returns 1 if we already wrote this namespace or 0 otherwise + */ +static int +xmlC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns) +{ + int i; + const xmlChar *prefix; + const xmlChar *href; + int has_empty_ns; + + if(cur == NULL) { + xmlC14NErrParam("searching namespaces stack (c14n)"); + return (0); + } + + /* + * if the default namespace xmlns="" is not defined yet then + * we do not want to print it out + */ + prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; + href = ((ns == NULL) || (ns->href == NULL)) ? BAD_CAST "" : ns->href; + has_empty_ns = (xmlC14NStrEqual(prefix, NULL) && xmlC14NStrEqual(href, NULL)); + + if (cur->nsTab != NULL) { + int start = (has_empty_ns) ? 0 : cur->nsPrevStart; + for (i = cur->nsCurEnd - 1; i >= start; --i) { + xmlNsPtr ns1 = cur->nsTab[i]; + + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { + return(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)); + } + } + } + return(has_empty_ns); +} + +static int +xmlExcC14NVisibleNsStackFind(xmlC14NVisibleNsStackPtr cur, xmlNsPtr ns, xmlC14NCtxPtr ctx) { + int i; + const xmlChar *prefix; + const xmlChar *href; + int has_empty_ns; + + if(cur == NULL) { + xmlC14NErrParam("searching namespaces stack (exc c14n)"); + return (0); + } + + /* + * if the default namespace xmlns="" is not defined yet then + * we do not want to print it out + */ + prefix = ((ns == NULL) || (ns->prefix == NULL)) ? BAD_CAST "" : ns->prefix; + href = ((ns == NULL) || (ns->href == NULL)) ? BAD_CAST "" : ns->href; + has_empty_ns = (xmlC14NStrEqual(prefix, NULL) && xmlC14NStrEqual(href, NULL)); + + if (cur->nsTab != NULL) { + int start = 0; + for (i = cur->nsCurEnd - 1; i >= start; --i) { + xmlNsPtr ns1 = cur->nsTab[i]; + + if(xmlC14NStrEqual(prefix, (ns1 != NULL) ? ns1->prefix : NULL)) { + if(xmlC14NStrEqual(href, (ns1 != NULL) ? ns1->href : NULL)) { + return(xmlC14NIsVisible(ctx, ns1, cur->nodeTab[i])); + } else { + return(0); + } + } + } + } + return(has_empty_ns); +} + + + + +/** + * xmlC14NIsXmlNs: + * @ns: the namespace to check + * + * Checks whether the given namespace is a default "xml:" namespace + * with href="http://www.w3.org/XML/1998/namespace" + * + * Returns 1 if the node is default or 0 otherwise + */ + +/* todo: make it a define? */ +static int +xmlC14NIsXmlNs(xmlNsPtr ns) +{ + return ((ns != NULL) && + (xmlStrEqual(ns->prefix, BAD_CAST "xml")) && + (xmlStrEqual(ns->href, XML_XML_NAMESPACE))); +} + + +/** + * xmlC14NNsCompare: + * @ns1: the pointer to first namespace + * @ns2: the pointer to second namespace + * + * Compares the namespaces by names (prefixes). + * + * Returns -1 if ns1 < ns2, 0 if ns1 == ns2 or 1 if ns1 > ns2. + */ +static int +xmlC14NNsCompare(xmlNsPtr ns1, xmlNsPtr ns2) +{ + if (ns1 == ns2) + return (0); + if (ns1 == NULL) + return (-1); + if (ns2 == NULL) + return (1); + + return (xmlStrcmp(ns1->prefix, ns2->prefix)); +} + + +/** + * xmlC14NPrintNamespaces: + * @ns: the pointer to namespace + * @ctx: the C14N context + * + * Prints the given namespace to the output buffer from C14N context. + * + * Returns 1 on success or 0 on fail. + */ +static int +xmlC14NPrintNamespaces(const xmlNsPtr ns, xmlC14NCtxPtr ctx) +{ + + if ((ns == NULL) || (ctx == NULL)) { + xmlC14NErrParam("writing namespaces"); + return 0; + } + + if (ns->prefix != NULL) { + xmlOutputBufferWriteString(ctx->buf, " xmlns:"); + xmlOutputBufferWriteString(ctx->buf, (const char *) ns->prefix); + xmlOutputBufferWriteString(ctx->buf, "=\""); + } else { + xmlOutputBufferWriteString(ctx->buf, " xmlns=\""); + } + if(ns->href != NULL) { + xmlOutputBufferWriteString(ctx->buf, (const char *) ns->href); + } + xmlOutputBufferWriteString(ctx->buf, "\""); + return (1); +} + +/** + * xmlC14NProcessNamespacesAxis: + * @ctx: the C14N context + * @node: the current node + * + * Prints out canonical namespace axis of the current node to the + * buffer from C14N context as follows + * + * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) + * + * Namespace Axis + * Consider a list L containing only namespace nodes in the + * axis and in the node-set in lexicographic order (ascending). To begin + * processing L, if the first node is not the default namespace node (a node + * with no namespace URI and no local name), then generate a space followed + * by xmlns="" if and only if the following conditions are met: + * - the element E that owns the axis is in the node-set + * - The nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always + * have non-empty values in XPath) + * The latter condition eliminates unnecessary occurrences of xmlns="" in + * the canonical form since an element only receives an xmlns="" if its + * default namespace is empty and if it has an immediate parent in the + * canonical form that has a non-empty default namespace. To finish + * processing L, simply process every namespace node in L, except omit + * namespace node with local name xml, which defines the xml prefix, + * if its string value is http://www.w3.org/XML/1998/namespace. + * + * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the + * Exclusive XML Canonicalization method. + * + * Returns 0 on success or -1 on fail. + */ +static int +xmlC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) +{ + xmlNodePtr n; + xmlNsPtr ns, tmp; + xmlListPtr list; + int already_rendered; + int has_empty_ns = 0; + + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { + xmlC14NErrParam("processing namespaces axis (c14n)"); + return (-1); + } + + /* + * Create a sorted list to store element namespaces + */ + list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNsCompare); + if (list == NULL) { + xmlC14NErrInternal("creating namespaces list (c14n)"); + return (-1); + } + + /* check all namespaces */ + for(n = cur; n != NULL; n = n->parent) { + for(ns = n->nsDef; ns != NULL; ns = ns->next) { + tmp = xmlSearchNs(cur->doc, cur, ns->prefix); + + if((tmp == ns) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { + already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); + if(visible) { + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + } + if(!already_rendered) { + xmlListInsert(list, ns); + } + if(xmlStrlen(ns->prefix) == 0) { + has_empty_ns = 1; + } + } + } + } + + /** + * if the first node is not the default namespace node (a node with no + * namespace URI and no local name), then generate a space followed by + * xmlns="" if and only if the following conditions are met: + * - the element E that owns the axis is in the node-set + * - the nearest ancestor element of E in the node-set has a default + * namespace node in the node-set (default namespace nodes always + * have non-empty values in XPath) + */ + if(visible && !has_empty_ns) { + static xmlNs ns_default; + + memset(&ns_default, 0, sizeof(ns_default)); + if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { + xmlC14NPrintNamespaces(&ns_default, ctx); + } + } + + + /* + * print out all elements from list + */ + xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); + + /* + * Cleanup + */ + xmlListDelete(list); + return (0); +} + + +/** + * xmlExcC14NProcessNamespacesAxis: + * @ctx: the C14N context + * @node: the current node + * + * Prints out exclusive canonical namespace axis of the current node to the + * buffer from C14N context as follows + * + * Exclusive XML Canonicalization + * http://www.w3.org/TR/xml-exc-c14n + * + * If the element node is in the XPath subset then output the node in + * accordance with Canonical XML except for namespace nodes which are + * rendered as follows: + * + * 1. Render each namespace node iff: + * * it is visibly utilized by the immediate parent element or one of + * its attributes, or is present in InclusiveNamespaces PrefixList, and + * * its prefix and value do not appear in ns_rendered. ns_rendered is + * obtained by popping the state stack in order to obtain a list of + * prefixes and their values which have already been rendered by + * an output ancestor of the namespace node's parent element. + * 2. Append the rendered namespace node to the list ns_rendered of namespace + * nodes rendered by output ancestors. Push ns_rendered on state stack and + * recurse. + * 3. After the recursion returns, pop thestate stack. + * + * + * Returns 0 on success or -1 on fail. + */ +static int +xmlExcC14NProcessNamespacesAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) +{ + xmlNsPtr ns; + xmlListPtr list; + xmlAttrPtr attr; + int already_rendered; + int has_empty_ns = 0; + int has_visibly_utilized_empty_ns = 0; + int has_empty_ns_in_inclusive_list = 0; + + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { + xmlC14NErrParam("processing namespaces axis (exc c14n)"); + return (-1); + } + + if(!xmlC14NIsExclusive(ctx)) { + xmlC14NErrParam("processing namespaces axis (exc c14n)"); + return (-1); + + } + + /* + * Create a sorted list to store element namespaces + */ + list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNsCompare); + if (list == NULL) { + xmlC14NErrInternal("creating namespaces list (exc c14n)"); + return (-1); + } + + /* + * process inclusive namespaces: + * All namespace nodes appearing on inclusive ns list are + * handled as provided in Canonical XML + */ + if(ctx->inclusive_ns_prefixes != NULL) { + xmlChar *prefix; + int i; + + for (i = 0; ctx->inclusive_ns_prefixes[i] != NULL; ++i) { + prefix = ctx->inclusive_ns_prefixes[i]; + /* + * Special values for namespace with empty prefix + */ + if (xmlStrEqual(prefix, BAD_CAST "#default") + || xmlStrEqual(prefix, BAD_CAST "")) { + prefix = NULL; + has_empty_ns_in_inclusive_list = 1; + } + + ns = xmlSearchNs(cur->doc, cur, prefix); + if((ns != NULL) && !xmlC14NIsXmlNs(ns) && xmlC14NIsVisible(ctx, ns, cur)) { + already_rendered = xmlC14NVisibleNsStackFind(ctx->ns_rendered, ns); + if(visible) { + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + } + if(!already_rendered) { + xmlListInsert(list, ns); + } + if(xmlStrlen(ns->prefix) == 0) { + has_empty_ns = 1; + } + } + } + } + + /* add node namespace */ + if(cur->ns != NULL) { + ns = cur->ns; + } else { + ns = xmlSearchNs(cur->doc, cur, NULL); + has_visibly_utilized_empty_ns = 1; + } + if((ns != NULL) && !xmlC14NIsXmlNs(ns)) { + if(visible && xmlC14NIsVisible(ctx, ns, cur)) { + if(!xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, ns, ctx)) { + xmlListInsert(list, ns); + } + } + if(visible) { + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, ns, cur); + } + if(xmlStrlen(ns->prefix) == 0) { + has_empty_ns = 1; + } + } + + + /* add attributes */ + for(attr = cur->properties; attr != NULL; attr = attr->next) { + /* + * we need to check that attribute is visible and has non + * default namespace (XML Namespaces: "default namespaces + * do not apply directly to attributes") + */ + if((attr->ns != NULL) && !xmlC14NIsXmlNs(attr->ns) && xmlC14NIsVisible(ctx, attr, cur)) { + already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, attr->ns, ctx); + xmlC14NVisibleNsStackAdd(ctx->ns_rendered, attr->ns, cur); + if(!already_rendered && visible) { + xmlListInsert(list, attr->ns); + } + if(xmlStrlen(attr->ns->prefix) == 0) { + has_empty_ns = 1; + } + } else if((attr->ns != NULL) && (xmlStrlen(attr->ns->prefix) == 0) && (xmlStrlen(attr->ns->href) == 0)) { + has_visibly_utilized_empty_ns = 1; + } + } + + /* + * Process xmlns="" + */ + if(visible && has_visibly_utilized_empty_ns && + !has_empty_ns && !has_empty_ns_in_inclusive_list) { + static xmlNs ns_default; + + memset(&ns_default, 0, sizeof(ns_default)); + + already_rendered = xmlExcC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default, ctx); + if(!already_rendered) { + xmlC14NPrintNamespaces(&ns_default, ctx); + } + } else if(visible && !has_empty_ns && has_empty_ns_in_inclusive_list) { + static xmlNs ns_default; + + memset(&ns_default, 0, sizeof(ns_default)); + if(!xmlC14NVisibleNsStackFind(ctx->ns_rendered, &ns_default)) { + xmlC14NPrintNamespaces(&ns_default, ctx); + } + } + + + + /* + * print out all elements from list + */ + xmlListWalk(list, (xmlListWalker) xmlC14NPrintNamespaces, (const void *) ctx); + + /* + * Cleanup + */ + xmlListDelete(list); + return (0); +} + + +/** + * xmlC14NIsXmlAttr: + * @attr: the attr to check + * + * Checks whether the given attribute is a default "xml:" namespace + * with href="http://www.w3.org/XML/1998/namespace" + * + * Returns 1 if the node is default or 0 otherwise + */ + +/* todo: make it a define? */ +static int +xmlC14NIsXmlAttr(xmlAttrPtr attr) +{ + return ((attr->ns != NULL) && + (xmlC14NIsXmlNs(attr->ns) != 0)); +} + + +/** + * xmlC14NAttrsCompare: + * @attr1: the pointer tls o first attr + * @attr2: the pointer to second attr + * + * Prints the given attribute to the output buffer from C14N context. + * + * Returns -1 if attr1 < attr2, 0 if attr1 == attr2 or 1 if attr1 > attr2. + */ +static int +xmlC14NAttrsCompare(xmlAttrPtr attr1, xmlAttrPtr attr2) +{ + int ret = 0; + + /* + * Simple cases + */ + if (attr1 == attr2) + return (0); + if (attr1 == NULL) + return (-1); + if (attr2 == NULL) + return (1); + if (attr1->ns == attr2->ns) { + return (xmlStrcmp(attr1->name, attr2->name)); + } + + /* + * Attributes in the default namespace are first + * because the default namespace is not applied to + * unqualified attributes + */ + if (attr1->ns == NULL) + return (-1); + if (attr2->ns == NULL) + return (1); + if (attr1->ns->prefix == NULL) + return (-1); + if (attr2->ns->prefix == NULL) + return (1); + + ret = xmlStrcmp(attr1->ns->href, attr2->ns->href); + if (ret == 0) { + ret = xmlStrcmp(attr1->name, attr2->name); + } + return (ret); +} + + +/** + * xmlC14NPrintAttrs: + * @attr: the pointer to attr + * @ctx: the C14N context + * + * Prints out canonical attribute urrent node to the + * buffer from C14N context as follows + * + * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) + * + * Returns 1 on success or 0 on fail. + */ +static int +xmlC14NPrintAttrs(const xmlAttrPtr attr, xmlC14NCtxPtr ctx) +{ + xmlChar *value; + xmlChar *buffer; + + if ((attr == NULL) || (ctx == NULL)) { + xmlC14NErrParam("writing attributes"); + return (0); + } + + xmlOutputBufferWriteString(ctx->buf, " "); + if (attr->ns != NULL && xmlStrlen(attr->ns->prefix) > 0) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) attr->ns->prefix); + xmlOutputBufferWriteString(ctx->buf, ":"); + } + xmlOutputBufferWriteString(ctx->buf, (const char *) attr->name); + xmlOutputBufferWriteString(ctx->buf, "=\""); + + value = xmlNodeListGetString(ctx->doc, attr->children, 1); + /* todo: should we log an error if value==NULL ? */ + if (value != NULL) { + buffer = xmlC11NNormalizeAttr(value); + xmlFree(value); + if (buffer != NULL) { + xmlOutputBufferWriteString(ctx->buf, (const char *) buffer); + xmlFree(buffer); + } else { + xmlC14NErrInternal("normalizing attributes axis"); + return (0); + } + } + xmlOutputBufferWriteString(ctx->buf, "\""); + return (1); +} + +/** + * xmlC14NFindHiddenParentAttr: + * + * Finds an attribute in a hidden parent node. + * + * Returns a pointer to the attribute node (if found) or NULL otherwise. + */ +static xmlAttrPtr +xmlC14NFindHiddenParentAttr(xmlC14NCtxPtr ctx, xmlNodePtr cur, const xmlChar * name, const xmlChar * ns) +{ + xmlAttrPtr res; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + res = xmlHasNsProp(cur, name, ns); + if(res != NULL) { + return res; + } + + cur = cur->parent; + } + + return NULL; +} + +/** + * xmlC14NFixupBaseAttr: + * + * Fixes up the xml:base attribute + * + * Returns the newly created attribute or NULL + */ +static xmlAttrPtr +xmlC14NFixupBaseAttr(xmlC14NCtxPtr ctx, xmlAttrPtr xml_base_attr) +{ + xmlChar * res = NULL; + xmlNodePtr cur; + xmlAttrPtr attr; + xmlChar * tmp_str; + xmlChar * tmp_str2; + int tmp_str_len; + + if ((ctx == NULL) || (xml_base_attr == NULL) || (xml_base_attr->parent == NULL)) { + xmlC14NErrParam("processing xml:base attribute"); + return (NULL); + } + + /* start from current value */ + res = xmlNodeListGetString(ctx->doc, xml_base_attr->children, 1); + if(res == NULL) { + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* go up the stack until we find a node that we rendered already */ + cur = xml_base_attr->parent->parent; + while((cur != NULL) && (!xmlC14NIsVisible(ctx, cur, cur->parent))) { + attr = xmlHasNsProp(cur, BAD_CAST "base", XML_XML_NAMESPACE); + if(attr != NULL) { + /* get attr value */ + tmp_str = xmlNodeListGetString(ctx->doc, attr->children, 1); + if(tmp_str == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't get attr value"); + return (NULL); + } + + /* we need to add '/' if our current base uri ends with '..' or '.' + to ensure that we are forced to go "up" all the time */ + tmp_str_len = xmlStrlen(tmp_str); + if(tmp_str_len > 1 && tmp_str[tmp_str_len - 2] == '.') { + tmp_str2 = xmlStrcat(tmp_str, BAD_CAST "/"); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't modify uri"); + return (NULL); + } + + tmp_str = tmp_str2; + } + + /* build uri */ + tmp_str2 = xmlBuildURI(res, tmp_str); + if(tmp_str2 == NULL) { + xmlFree(tmp_str); + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct uri"); + return (NULL); + } + + /* cleanup and set the new res */ + xmlFree(tmp_str); + xmlFree(res); + res = tmp_str2; + } + + /* next */ + cur = cur->parent; + } + + /* check if result uri is empty or not */ + if((res == NULL) || xmlStrEqual(res, BAD_CAST "")) { + xmlFree(res); + return (NULL); + } + + /* create and return the new attribute node */ + attr = xmlNewNsProp(NULL, xml_base_attr->ns, BAD_CAST "base", res); + if(attr == NULL) { + xmlFree(res); + + xmlC14NErrInternal("processing xml:base attribute - can't construct attribute"); + return (NULL); + } + + /* done */ + xmlFree(res); + return (attr); +} + +/** + * xmlC14NProcessAttrsAxis: + * @ctx: the C14N context + * @cur: the current node + * @parent_visible: the visibility of parent node + * @all_parents_visible: the visibility of all parent nodes + * + * Prints out canonical attribute axis of the current node to the + * buffer from C14N context as follows + * + * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) + * + * Attribute Axis + * In lexicographic order (ascending), process each node that + * is in the element's attribute axis and in the node-set. + * + * The processing of an element node E MUST be modified slightly + * when an XPath node-set is given as input and the element's + * parent is omitted from the node-set. + * + * + * Exclusive XML Canonicalization v 1.0 (http://www.w3.org/TR/xml-exc-c14n) + * + * Canonical XML applied to a document subset requires the search of the + * ancestor nodes of each orphan element node for attributes in the xml + * namespace, such as xml:lang and xml:space. These are copied into the + * element node except if a declaration of the same attribute is already + * in the attribute axis of the element (whether or not it is included in + * the document subset). This search and copying are omitted from the + * Exclusive XML Canonicalization method. + * + * Returns 0 on success or -1 on fail. + */ +static int +xmlC14NProcessAttrsAxis(xmlC14NCtxPtr ctx, xmlNodePtr cur, int parent_visible) +{ + xmlAttrPtr attr; + xmlListPtr list; + xmlAttrPtr attrs_to_delete = NULL; + + /* special processing for 1.1 spec */ + xmlAttrPtr xml_base_attr = NULL; + xmlAttrPtr xml_lang_attr = NULL; + xmlAttrPtr xml_space_attr = NULL; + + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { + xmlC14NErrParam("processing attributes axis"); + return (-1); + } + + /* + * Create a sorted list to store element attributes + */ + list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NAttrsCompare); + if (list == NULL) { + xmlC14NErrInternal("creating attributes list"); + return (-1); + } + + switch(ctx->mode) { + case XML_C14N_1_0: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and the element's parent is omitted from the node-set. The method for processing + * the attribute axis of an element E in the node-set is enhanced. All element nodes along E's + * ancestor axis are examined for nearest occurrences of attributes in the xml namespace, such + * as xml:lang and xml:space (whether or not they are in the node-set). From this list of attributes, + * remove any that are in E's attribute axis (whether or not they are in the node-set). Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; + } + + /* + * Handle xml attributes + */ + if (parent_visible && (cur->parent != NULL) && + (!xmlC14NIsVisible(ctx, cur->parent, cur->parent->parent))) + { + xmlNodePtr tmp; + + /* + * If XPath node-set is not specified then the parent is always + * visible! + */ + tmp = cur->parent; + while (tmp != NULL) { + attr = tmp->properties; + while (attr != NULL) { + if (xmlC14NIsXmlAttr(attr) != 0) { + if (xmlListSearch(list, attr) == NULL) { + xmlListInsert(list, attr); + } + } + attr = attr->next; + } + tmp = tmp->parent; + } + } + + /* done */ + break; + case XML_C14N_EXCLUSIVE_1_0: + /* attributes in the XML namespace, such as xml:lang and xml:space + * are not imported into orphan nodes of the document subset + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + attr = attr->next; + } + + /* do nothing special for xml attributes */ + break; + case XML_C14N_1_1: + /* The processing of an element node E MUST be modified slightly when an XPath node-set is + * given as input and some of the element's ancestors are omitted from the node-set. + * + * Simple inheritable attributes are attributes that have a value that requires at most a simple + * redeclaration. This redeclaration is done by supplying a new value in the child axis. The + * redeclaration of a simple inheritable attribute A contained in one of E's ancestors is done + * by supplying a value to an attribute Ae inside E with the same name. Simple inheritable attributes + * are xml:lang and xml:space. + * + * The method for processing the attribute axis of an element E in the node-set is hence enhanced. + * All element nodes along E's ancestor axis are examined for the nearest occurrences of simple + * inheritable attributes in the xml namespace, such as xml:lang and xml:space (whether or not they + * are in the node-set). From this list of attributes, any simple inheritable attributes that are + * already in E's attribute axis (whether or not they are in the node-set) are removed. Then, + * lexicographically merge this attribute list with the nodes of E's attribute axis that are in + * the node-set. The result of visiting the attribute axis is computed by processing the attribute + * nodes in this merged attribute list. + * + * The xml:id attribute is not a simple inheritable attribute and no processing of these attributes is + * performed. + * + * The xml:base attribute is not a simple inheritable attribute and requires special processing beyond + * a simple redeclaration. + * + * Attributes in the XML namespace other than xml:base, xml:id, xml:lang, and xml:space MUST be processed + * as ordinary attributes. + */ + + /* + * Add all visible attributes from current node. + */ + attr = cur->properties; + while (attr != NULL) { + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((!parent_visible) || (xmlC14NIsXmlAttr(attr) == 0)) { + /* check that attribute is visible */ + if (xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } else { + int matched = 0; + + /* check for simple inheritance attributes */ + if((!matched) && (xml_lang_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "lang")) { + xml_lang_attr = attr; + matched = 1; + } + if((!matched) && (xml_space_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "space")) { + xml_space_attr = attr; + matched = 1; + } + + /* check for base attr */ + if((!matched) && (xml_base_attr == NULL) && xmlStrEqual(attr->name, BAD_CAST "base")) { + xml_base_attr = attr; + matched = 1; + } + + /* otherwise, it is a normal attribute, so just check if it is visible */ + if((!matched) && xmlC14NIsVisible(ctx, attr, cur)) { + xmlListInsert(list, attr); + } + } + + /* move to the next one */ + attr = attr->next; + } + + /* special processing for XML attribute kiks in only when we have invisible parents */ + if ((parent_visible)) { + + /* simple inheritance attributes - copy */ + if(xml_lang_attr == NULL) { + xml_lang_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "lang", XML_XML_NAMESPACE); + } + if(xml_lang_attr != NULL) { + xmlListInsert(list, xml_lang_attr); + } + if(xml_space_attr == NULL) { + xml_space_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "space", XML_XML_NAMESPACE); + } + if(xml_space_attr != NULL) { + xmlListInsert(list, xml_space_attr); + } + + /* base uri attribute - fix up */ + if(xml_base_attr == NULL) { + /* if we don't have base uri attribute, check if we have a "hidden" one above */ + xml_base_attr = xmlC14NFindHiddenParentAttr(ctx, cur->parent, BAD_CAST "base", XML_XML_NAMESPACE); + } + if(xml_base_attr != NULL) { + xml_base_attr = xmlC14NFixupBaseAttr(ctx, xml_base_attr); + if(xml_base_attr != NULL) { + xmlListInsert(list, xml_base_attr); + + /* note that we MUST delete returned attr node ourselves! */ + xml_base_attr->next = attrs_to_delete; + attrs_to_delete = xml_base_attr; + } + } + } + + /* done */ + break; + } + + /* + * print out all elements from list + */ + xmlListWalk(list, (xmlListWalker) xmlC14NPrintAttrs, (const void *) ctx); + + /* + * Cleanup + */ + xmlFreePropList(attrs_to_delete); + xmlListDelete(list); + return (0); +} + +/** + * xmlC14NCheckForRelativeNamespaces: + * @ctx: the C14N context + * @cur: the current element node + * + * Checks that current element node has no relative namespaces defined + * + * Returns 0 if the node has no relative namespaces or -1 otherwise. + */ +static int +xmlC14NCheckForRelativeNamespaces(xmlC14NCtxPtr ctx, xmlNodePtr cur) +{ + xmlNsPtr ns; + + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { + xmlC14NErrParam("checking for relative namespaces"); + return (-1); + } + + ns = cur->nsDef; + while (ns != NULL) { + if (xmlStrlen(ns->href) > 0) { + xmlURIPtr uri; + + uri = xmlParseURI((const char *) ns->href); + if (uri == NULL) { + xmlC14NErrInternal("parsing namespace uri"); + return (-1); + } + if (xmlStrlen((const xmlChar *) uri->scheme) == 0) { + xmlC14NErrRelativeNamespace(uri->scheme); + xmlFreeURI(uri); + return (-1); + } + if ((xmlStrcasecmp((const xmlChar *) uri->scheme, BAD_CAST "urn") != 0) + && (xmlStrcasecmp((const xmlChar *) uri->scheme, BAD_CAST "dav") !=0) + && (xmlStrlen((const xmlChar *) uri->server) == 0)) { + xmlC14NErrRelativeNamespace(uri->scheme); + xmlFreeURI(uri); + return (-1); + } + xmlFreeURI(uri); + } + ns = ns->next; + } + return (0); +} + +/** + * xmlC14NProcessElementNode: + * @ctx: the pointer to C14N context object + * @cur: the node to process + * @visible: this node is visible + * @all_parents_visible: whether all the parents of this node are visible + * + * Canonical XML v 1.0 (http://www.w3.org/TR/xml-c14n) + * + * Element Nodes + * If the element is not in the node-set, then the result is obtained + * by processing the namespace axis, then the attribute axis, then + * processing the child nodes of the element that are in the node-set + * (in document order). If the element is in the node-set, then the result + * is an open angle bracket (<), the element QName, the result of + * processing the namespace axis, the result of processing the attribute + * axis, a close angle bracket (>), the result of processing the child + * nodes of the element that are in the node-set (in document order), an + * open angle bracket, a forward slash (/), the element QName, and a close + * angle bracket. + * + * Returns non-negative value on success or negative value on fail + */ +static int +xmlC14NProcessElementNode(xmlC14NCtxPtr ctx, xmlNodePtr cur, int visible) +{ + int ret; + xmlC14NVisibleNsStack state; + int parent_is_doc = 0; + + if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) { + xmlC14NErrParam("processing element node"); + return (-1); + } + + /* + * Check relative relative namespaces: + * implementations of XML canonicalization MUST report an operation + * failure on documents containing relative namespace URIs. + */ + if (xmlC14NCheckForRelativeNamespaces(ctx, cur) < 0) { + xmlC14NErrInternal("checking for relative namespaces"); + return (-1); + } + + + /* + * Save ns_rendered stack position + */ + memset(&state, 0, sizeof(state)); + xmlC14NVisibleNsStackSave(ctx->ns_rendered, &state); + + if (visible) { + if (ctx->parent_is_doc) { + /* save this flag into the stack */ + parent_is_doc = ctx->parent_is_doc; + ctx->parent_is_doc = 0; + ctx->pos = XMLC14N_INSIDE_DOCUMENT_ELEMENT; + } + xmlOutputBufferWriteString(ctx->buf, "<"); + + if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) cur->ns->prefix); + xmlOutputBufferWriteString(ctx->buf, ":"); + } + xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name); + } + + if (!xmlC14NIsExclusive(ctx)) { + ret = xmlC14NProcessNamespacesAxis(ctx, cur, visible); + } else { + ret = xmlExcC14NProcessNamespacesAxis(ctx, cur, visible); + } + if (ret < 0) { + xmlC14NErrInternal("processing namespaces axis"); + return (-1); + } + /* todo: shouldn't this go to "visible only"? */ + if(visible) { + xmlC14NVisibleNsStackShift(ctx->ns_rendered); + } + + ret = xmlC14NProcessAttrsAxis(ctx, cur, visible); + if (ret < 0) { + xmlC14NErrInternal("processing attributes axis"); + return (-1); + } + + if (visible) { + xmlOutputBufferWriteString(ctx->buf, ">"); + } + if (cur->children != NULL) { + ret = xmlC14NProcessNodeList(ctx, cur->children); + if (ret < 0) { + xmlC14NErrInternal("processing childrens list"); + return (-1); + } + } + if (visible) { + xmlOutputBufferWriteString(ctx->buf, "</"); + if ((cur->ns != NULL) && (xmlStrlen(cur->ns->prefix) > 0)) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) cur->ns->prefix); + xmlOutputBufferWriteString(ctx->buf, ":"); + } + xmlOutputBufferWriteString(ctx->buf, (const char *) cur->name); + xmlOutputBufferWriteString(ctx->buf, ">"); + if (parent_is_doc) { + /* restore this flag from the stack for next node */ + ctx->parent_is_doc = parent_is_doc; + ctx->pos = XMLC14N_AFTER_DOCUMENT_ELEMENT; + } + } + + /* + * Restore ns_rendered stack position + */ + xmlC14NVisibleNsStackRestore(ctx->ns_rendered, &state); + return (0); +} + +/** + * xmlC14NProcessNode: + * @ctx: the pointer to C14N context object + * @cur: the node to process + * + * Processes the given node + * + * Returns non-negative value on success or negative value on fail + */ +static int +xmlC14NProcessNode(xmlC14NCtxPtr ctx, xmlNodePtr cur) +{ + int ret = 0; + int visible; + + if ((ctx == NULL) || (cur == NULL)) { + xmlC14NErrParam("processing node"); + return (-1); + } + + visible = xmlC14NIsVisible(ctx, cur, cur->parent); + switch (cur->type) { + case XML_ELEMENT_NODE: + ret = xmlC14NProcessElementNode(ctx, cur, visible); + break; + case XML_CDATA_SECTION_NODE: + case XML_TEXT_NODE: + /* + * Text Nodes + * the string value, except all ampersands are replaced + * by &, all open angle brackets (<) are replaced by <, all closing + * angle brackets (>) are replaced by >, and all #xD characters are + * replaced by 
. + */ + /* cdata sections are processed as text nodes */ + /* todo: verify that cdata sections are included in XPath nodes set */ + if ((visible) && (cur->content != NULL)) { + xmlChar *buffer; + + buffer = xmlC11NNormalizeText(cur->content); + if (buffer != NULL) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) buffer); + xmlFree(buffer); + } else { + xmlC14NErrInternal("normalizing text node"); + return (-1); + } + } + break; + case XML_PI_NODE: + /* + * Processing Instruction (PI) Nodes- + * The opening PI symbol (<?), the PI target name of the node, + * a leading space and the string value if it is not empty, and + * the closing PI symbol (?>). If the string value is empty, + * then the leading space is not added. Also, a trailing #xA is + * rendered after the closing PI symbol for PI children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening PI + * symbol of PI children of the root node with a greater document + * order than the document element. + */ + if (visible) { + if (ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) { + xmlOutputBufferWriteString(ctx->buf, "\x0A<?"); + } else { + xmlOutputBufferWriteString(ctx->buf, "<?"); + } + + xmlOutputBufferWriteString(ctx->buf, + (const char *) cur->name); + if ((cur->content != NULL) && (*(cur->content) != '\0')) { + xmlChar *buffer; + + xmlOutputBufferWriteString(ctx->buf, " "); + + /* todo: do we need to normalize pi? */ + buffer = xmlC11NNormalizePI(cur->content); + if (buffer != NULL) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) buffer); + xmlFree(buffer); + } else { + xmlC14NErrInternal("normalizing pi node"); + return (-1); + } + } + + if (ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) { + xmlOutputBufferWriteString(ctx->buf, "?>\x0A"); + } else { + xmlOutputBufferWriteString(ctx->buf, "?>"); + } + } + break; + case XML_COMMENT_NODE: + /* + * Comment Nodes + * Nothing if generating canonical XML without comments. For + * canonical XML with comments, generate the opening comment + * symbol (<!--), the string value of the node, and the + * closing comment symbol (-->). Also, a trailing #xA is rendered + * after the closing comment symbol for comment children of the + * root node with a lesser document order than the document + * element, and a leading #xA is rendered before the opening + * comment symbol of comment children of the root node with a + * greater document order than the document element. (Comment + * children of the root node represent comments outside of the + * top-level document element and outside of the document type + * declaration). + */ + if (visible && ctx->with_comments) { + if (ctx->pos == XMLC14N_AFTER_DOCUMENT_ELEMENT) { + xmlOutputBufferWriteString(ctx->buf, "\x0A<!--"); + } else { + xmlOutputBufferWriteString(ctx->buf, "<!--"); + } + + if (cur->content != NULL) { + xmlChar *buffer; + + /* todo: do we need to normalize comment? */ + buffer = xmlC11NNormalizeComment(cur->content); + if (buffer != NULL) { + xmlOutputBufferWriteString(ctx->buf, + (const char *) buffer); + xmlFree(buffer); + } else { + xmlC14NErrInternal("normalizing comment node"); + return (-1); + } + } + + if (ctx->pos == XMLC14N_BEFORE_DOCUMENT_ELEMENT) { + xmlOutputBufferWriteString(ctx->buf, "-->\x0A"); + } else { + xmlOutputBufferWriteString(ctx->buf, "-->"); + } + } + break; + case XML_DOCUMENT_NODE: + case XML_DOCUMENT_FRAG_NODE: /* should be processed as document? */ +#ifdef LIBXML_DOCB_ENABLED + case XML_DOCB_DOCUMENT_NODE: /* should be processed as document? */ +#endif +#ifdef LIBXML_HTML_ENABLED + case XML_HTML_DOCUMENT_NODE: /* should be processed as document? */ +#endif + if (cur->children != NULL) { + ctx->pos = XMLC14N_BEFORE_DOCUMENT_ELEMENT; + ctx->parent_is_doc = 1; + ret = xmlC14NProcessNodeList(ctx, cur->children); + } + break; + + case XML_ATTRIBUTE_NODE: + xmlC14NErrInvalidNode("XML_ATTRIBUTE_NODE", "processing node"); + return (-1); + case XML_NAMESPACE_DECL: + xmlC14NErrInvalidNode("XML_NAMESPACE_DECL", "processing node"); + return (-1); + case XML_ENTITY_REF_NODE: + xmlC14NErrInvalidNode("XML_ENTITY_REF_NODE", "processing node"); + return (-1); + case XML_ENTITY_NODE: + xmlC14NErrInvalidNode("XML_ENTITY_NODE", "processing node"); + return (-1); + + case XML_DOCUMENT_TYPE_NODE: + case XML_NOTATION_NODE: + case XML_DTD_NODE: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + case XML_ENTITY_DECL: +#ifdef LIBXML_XINCLUDE_ENABLED + case XML_XINCLUDE_START: + case XML_XINCLUDE_END: +#endif + /* + * should be ignored according to "W3C Canonical XML" + */ + break; + default: + xmlC14NErrUnknownNode(cur->type, "processing node"); + return (-1); + } + + return (ret); +} + +/** + * xmlC14NProcessNodeList: + * @ctx: the pointer to C14N context object + * @cur: the node to start from + * + * Processes all nodes in the row starting from cur. + * + * Returns non-negative value on success or negative value on fail + */ +static int +xmlC14NProcessNodeList(xmlC14NCtxPtr ctx, xmlNodePtr cur) +{ + int ret; + + if (ctx == NULL) { + xmlC14NErrParam("processing node list"); + return (-1); + } + + for (ret = 0; cur != NULL && ret >= 0; cur = cur->next) { + ret = xmlC14NProcessNode(ctx, cur); + } + return (ret); +} + + +/** + * xmlC14NFreeCtx: + * @ctx: the pointer to C14N context object + * + * Cleanups the C14N context object. + */ + +static void +xmlC14NFreeCtx(xmlC14NCtxPtr ctx) +{ + if (ctx == NULL) { + xmlC14NErrParam("freeing context"); + return; + } + + if (ctx->ns_rendered != NULL) { + xmlC14NVisibleNsStackDestroy(ctx->ns_rendered); + } + xmlFree(ctx); +} + +/** + * xmlC14NNewCtx: + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible + * or not + * @user_data: the first parameter for @is_visible_callback function + * (in most cases, it is nodes set) + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixe the list of inclusive namespace prefixes + * ended with a NULL or NULL if there is no + * inclusive namespaces (only for ` + * canonicalization) + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this + * buffer MUST have encoder==NULL because C14N requires + * UTF-8 output + * + * Creates new C14N context object to store C14N parameters. + * + * Returns pointer to newly created object (success) or NULL (fail) + */ +static xmlC14NCtxPtr +xmlC14NNewCtx(xmlDocPtr doc, + xmlC14NIsVisibleCallback is_visible_callback, void* user_data, + xmlC14NMode mode, xmlChar ** inclusive_ns_prefixes, + int with_comments, xmlOutputBufferPtr buf) +{ + xmlC14NCtxPtr ctx = NULL; + + if ((doc == NULL) || (buf == NULL)) { + xmlC14NErrParam("creating new context"); + return (NULL); + } + + /* + * Validate the encoding output buffer encoding + */ + if (buf->encoder != NULL) { + xmlC14NErr(ctx, (xmlNodePtr) doc, XML_C14N_REQUIRES_UTF8, +"xmlC14NNewCtx: output buffer encoder != NULL but C14N requires UTF8 output\n"); + return (NULL); + } + + /* + * Validate the XML document encoding value, if provided. + */ + if (doc->charset != XML_CHAR_ENCODING_UTF8) { + xmlC14NErr(ctx, (xmlNodePtr) doc, XML_C14N_REQUIRES_UTF8, + "xmlC14NNewCtx: source document not in UTF8\n"); + return (NULL); + } + + /* + * Allocate a new xmlC14NCtxPtr and fill the fields. + */ + ctx = (xmlC14NCtxPtr) xmlMalloc(sizeof(xmlC14NCtx)); + if (ctx == NULL) { + xmlC14NErrMemory("creating context"); + return (NULL); + } + memset(ctx, 0, sizeof(xmlC14NCtx)); + + /* + * initialize C14N context + */ + ctx->doc = doc; + ctx->with_comments = with_comments; + ctx->is_visible_callback = is_visible_callback; + ctx->user_data = user_data; + ctx->buf = buf; + ctx->parent_is_doc = 1; + ctx->pos = XMLC14N_BEFORE_DOCUMENT_ELEMENT; + ctx->ns_rendered = xmlC14NVisibleNsStackCreate(); + + if(ctx->ns_rendered == NULL) { + xmlC14NErr(ctx, (xmlNodePtr) doc, XML_C14N_CREATE_STACK, + "xmlC14NNewCtx: xmlC14NVisibleNsStackCreate failed\n"); + xmlC14NFreeCtx(ctx); + return (NULL); + } + + /* + * Set "mode" flag and remember list of incluseve prefixes + * for exclusive c14n + */ + ctx->mode = mode; + if(xmlC14NIsExclusive(ctx)) { + ctx->inclusive_ns_prefixes = inclusive_ns_prefixes; + } + return (ctx); +} + +/** + * xmlC14NExecute: + * @doc: the XML document for canonization + * @is_visible_callback:the function to use to determine is node visible + * or not + * @user_data: the first parameter for @is_visible_callback function + * (in most cases, it is nodes set) + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * ended with a NULL or NULL if there is no + * inclusive namespaces (only for exclusive + * canonicalization, ignored otherwise) + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this + * buffer MUST have encoder==NULL because C14N requires + * UTF-8 output + * + * Dumps the canonized image of given XML document into the provided buffer. + * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or + * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) + * + * Returns non-negative value on success or a negative value on fail + */ +int +xmlC14NExecute(xmlDocPtr doc, xmlC14NIsVisibleCallback is_visible_callback, + void* user_data, int mode, xmlChar **inclusive_ns_prefixes, + int with_comments, xmlOutputBufferPtr buf) { + + xmlC14NCtxPtr ctx; + xmlC14NMode c14n_mode = XML_C14N_1_0; + int ret; + + if ((buf == NULL) || (doc == NULL)) { + xmlC14NErrParam("executing c14n"); + return (-1); + } + + /* for backward compatibility, we have to have "mode" as "int" + and here we check that user gives valid value */ + switch(mode) { + case XML_C14N_1_0: + case XML_C14N_EXCLUSIVE_1_0: + case XML_C14N_1_1: + c14n_mode = (xmlC14NMode)mode; + break; + default: + xmlC14NErrParam("invalid mode for executing c14n"); + return (-1); + } + + /* + * Validate the encoding output buffer encoding + */ + if (buf->encoder != NULL) { + xmlC14NErr(NULL, (xmlNodePtr) doc, XML_C14N_REQUIRES_UTF8, +"xmlC14NExecute: output buffer encoder != NULL but C14N requires UTF8 output\n"); + return (-1); + } + + ctx = xmlC14NNewCtx(doc, is_visible_callback, user_data, + c14n_mode, inclusive_ns_prefixes, + with_comments, buf); + if (ctx == NULL) { + xmlC14NErr(NULL, (xmlNodePtr) doc, XML_C14N_CREATE_CTXT, + "xmlC14NExecute: unable to create C14N context\n"); + return (-1); + } + + + + /* + * Root Node + * The root node is the parent of the top-level document element. The + * result of processing each of its child nodes that is in the node-set + * in document order. The root node does not generate a byte order mark, + * XML declaration, nor anything from within the document type + * declaration. + */ + if (doc->children != NULL) { + ret = xmlC14NProcessNodeList(ctx, doc->children); + if (ret < 0) { + xmlC14NErrInternal("processing docs children list"); + xmlC14NFreeCtx(ctx); + return (-1); + } + } + + /* + * Flush buffer to get number of bytes written + */ + ret = xmlOutputBufferFlush(buf); + if (ret < 0) { + xmlC14NErrInternal("flushing output buffer"); + xmlC14NFreeCtx(ctx); + return (-1); + } + + /* + * Cleanup + */ + xmlC14NFreeCtx(ctx); + return (ret); +} + +/** + * xmlC14NDocSaveTo: + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * ended with a NULL or NULL if there is no + * inclusive namespaces (only for exclusive + * canonicalization, ignored otherwise) + * @with_comments: include comments in the result (!=0) or not (==0) + * @buf: the output buffer to store canonical XML; this + * buffer MUST have encoder==NULL because C14N requires + * UTF-8 output + * + * Dumps the canonized image of given XML document into the provided buffer. + * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or + * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) + * + * Returns non-negative value on success or a negative value on fail + */ +int +xmlC14NDocSaveTo(xmlDocPtr doc, xmlNodeSetPtr nodes, + int mode, xmlChar ** inclusive_ns_prefixes, + int with_comments, xmlOutputBufferPtr buf) { + return(xmlC14NExecute(doc, + (xmlC14NIsVisibleCallback)xmlC14NIsNodeInNodeset, + nodes, + mode, + inclusive_ns_prefixes, + with_comments, + buf)); +} + + +/** + * xmlC14NDocDumpMemory: + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * ended with a NULL or NULL if there is no + * inclusive namespaces (only for exclusive + * canonicalization, ignored otherwise) + * @with_comments: include comments in the result (!=0) or not (==0) + * @doc_txt_ptr: the memory pointer for allocated canonical XML text; + * the caller of this functions is responsible for calling + * xmlFree() to free allocated memory + * + * Dumps the canonized image of given XML document into memory. + * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or + * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) + * + * Returns the number of bytes written on success or a negative value on fail + */ +int +xmlC14NDocDumpMemory(xmlDocPtr doc, xmlNodeSetPtr nodes, + int mode, xmlChar ** inclusive_ns_prefixes, + int with_comments, xmlChar ** doc_txt_ptr) +{ + int ret; + xmlOutputBufferPtr buf; + + if (doc_txt_ptr == NULL) { + xmlC14NErrParam("dumping doc to memory"); + return (-1); + } + + *doc_txt_ptr = NULL; + + /* + * create memory buffer with UTF8 (default) encoding + */ + buf = xmlAllocOutputBuffer(NULL); + if (buf == NULL) { + xmlC14NErrMemory("creating output buffer"); + return (-1); + } + + /* + * canonize document and write to buffer + */ + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, + with_comments, buf); + if (ret < 0) { + xmlC14NErrInternal("saving doc to output buffer"); + (void) xmlOutputBufferClose(buf); + return (-1); + } + + ret = buf->buffer->use; + if (ret > 0) { + *doc_txt_ptr = xmlStrndup(buf->buffer->content, ret); + } + (void) xmlOutputBufferClose(buf); + + if ((*doc_txt_ptr == NULL) && (ret > 0)) { + xmlC14NErrMemory("coping canonicanized document"); + return (-1); + } + return (ret); +} + +/** + * xmlC14NDocSave: + * @doc: the XML document for canonization + * @nodes: the nodes set to be included in the canonized image + * or NULL if all document nodes should be included + * @mode: the c14n mode (see @xmlC14NMode) + * @inclusive_ns_prefixes: the list of inclusive namespace prefixes + * ended with a NULL or NULL if there is no + * inclusive namespaces (only for exclusive + * canonicalization, ignored otherwise) + * @with_comments: include comments in the result (!=0) or not (==0) + * @filename: the filename to store canonical XML image + * @compression: the compression level (zlib requred): + * -1 - libxml default, + * 0 - uncompressed, + * >0 - compression level + * + * Dumps the canonized image of given XML document into the file. + * For details see "Canonical XML" (http://www.w3.org/TR/xml-c14n) or + * "Exclusive XML Canonicalization" (http://www.w3.org/TR/xml-exc-c14n) + * + * Returns the number of bytes written success or a negative value on fail + */ +int +xmlC14NDocSave(xmlDocPtr doc, xmlNodeSetPtr nodes, + int mode, xmlChar ** inclusive_ns_prefixes, + int with_comments, const char *filename, int compression) +{ + xmlOutputBufferPtr buf; + int ret; + + if (filename == NULL) { + xmlC14NErrParam("saving doc"); + return (-1); + } +#ifdef HAVE_ZLIB_H + if (compression < 0) + compression = xmlGetCompressMode(); +#endif + + /* + * save the content to a temp buffer, use default UTF8 encoding. + */ + buf = xmlOutputBufferCreateFilename(filename, NULL, compression); + if (buf == NULL) { + xmlC14NErrInternal("creating temporary filename"); + return (-1); + } + + /* + * canonize document and write to buffer + */ + ret = xmlC14NDocSaveTo(doc, nodes, mode, inclusive_ns_prefixes, + with_comments, buf); + if (ret < 0) { + xmlC14NErrInternal("cannicanize document to buffer"); + (void) xmlOutputBufferClose(buf); + return (-1); + } + + /* + * get the numbers of bytes written + */ + ret = xmlOutputBufferClose(buf); + return (ret); +} + + + +/* + * Macro used to grow the current buffer. + */ +#define growBufferReentrant() { \ + buffer_size *= 2; \ + buffer = (xmlChar *) \ + xmlRealloc(buffer, buffer_size * sizeof(xmlChar)); \ + if (buffer == NULL) { \ + xmlC14NErrMemory("growing buffer"); \ + return(NULL); \ + } \ +} + +/** + * xmlC11NNormalizeString: + * @input: the input string + * @mode: the normalization mode (attribute, comment, PI or text) + * + * Converts a string to a canonical (normalized) format. The code is stolen + * from xmlEncodeEntitiesReentrant(). Added normalization of \x09, \x0a, \x0A + * and the @mode parameter + * + * Returns a normalized string (caller is responsible for calling xmlFree()) + * or NULL if an error occurs + */ +static xmlChar * +xmlC11NNormalizeString(const xmlChar * input, + xmlC14NNormalizationMode mode) +{ + const xmlChar *cur = input; + xmlChar *buffer = NULL; + xmlChar *out = NULL; + int buffer_size = 0; + + if (input == NULL) + return (NULL); + + /* + * allocate an translation buffer. + */ + buffer_size = 1000; + buffer = (xmlChar *) xmlMallocAtomic(buffer_size * sizeof(xmlChar)); + if (buffer == NULL) { + xmlC14NErrMemory("allocating buffer"); + return (NULL); + } + out = buffer; + + while (*cur != '\0') { + if ((out - buffer) > (buffer_size - 10)) { + int indx = out - buffer; + + growBufferReentrant(); + out = &buffer[indx]; + } + + if ((*cur == '<') && ((mode == XMLC14N_NORMALIZE_ATTR) || + (mode == XMLC14N_NORMALIZE_TEXT))) { + *out++ = '&'; + *out++ = 'l'; + *out++ = 't'; + *out++ = ';'; + } else if ((*cur == '>') && (mode == XMLC14N_NORMALIZE_TEXT)) { + *out++ = '&'; + *out++ = 'g'; + *out++ = 't'; + *out++ = ';'; + } else if ((*cur == '&') && ((mode == XMLC14N_NORMALIZE_ATTR) || + (mode == XMLC14N_NORMALIZE_TEXT))) { + *out++ = '&'; + *out++ = 'a'; + *out++ = 'm'; + *out++ = 'p'; + *out++ = ';'; + } else if ((*cur == '"') && (mode == XMLC14N_NORMALIZE_ATTR)) { + *out++ = '&'; + *out++ = 'q'; + *out++ = 'u'; + *out++ = 'o'; + *out++ = 't'; + *out++ = ';'; + } else if ((*cur == '\x09') && (mode == XMLC14N_NORMALIZE_ATTR)) { + *out++ = '&'; + *out++ = '#'; + *out++ = 'x'; + *out++ = '9'; + *out++ = ';'; + } else if ((*cur == '\x0A') && (mode == XMLC14N_NORMALIZE_ATTR)) { + *out++ = '&'; + *out++ = '#'; + *out++ = 'x'; + *out++ = 'A'; + *out++ = ';'; + } else if ((*cur == '\x0D') && ((mode == XMLC14N_NORMALIZE_ATTR) || + (mode == XMLC14N_NORMALIZE_TEXT) || + (mode == XMLC14N_NORMALIZE_COMMENT) || + (mode == XMLC14N_NORMALIZE_PI))) { + *out++ = '&'; + *out++ = '#'; + *out++ = 'x'; + *out++ = 'D'; + *out++ = ';'; + } else { + /* + * Works because on UTF-8, all extended sequences cannot + * result in bytes in the ASCII range. + */ + *out++ = *cur; + } + cur++; + } + *out = 0; + return (buffer); +} +#endif /* LIBXML_OUTPUT_ENABLED */ +#define bottom_c14n +#include "elfgcchack.h" +#endif /* LIBXML_C14N_ENABLED */
diff --git a/libxml2-2.7.7/catalog.c b/libxml2-2.7.7/catalog.c new file mode 100644 index 0000000..af84b7c --- /dev/null +++ b/libxml2-2.7.7/catalog.c
@@ -0,0 +1,3824 @@ +/** + * catalog.c: set of generic Catalog related routines + * + * Reference: SGML Open Technical Resolution TR9401:1997. + * http://www.jclark.com/sp/catalog.htm + * + * XML Catalogs Working Draft 06 August 2001 + * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * See Copyright for the status of this software. + * + * Daniel.Veillard@imag.fr + */ + +#define IN_LIBXML +#include "libxml.h" + +#ifdef LIBXML_CATALOG_ENABLED +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#include <string.h> +#include <libxml/xmlmemory.h> +#include <libxml/hash.h> +#include <libxml/uri.h> +#include <libxml/parserInternals.h> +#include <libxml/catalog.h> +#include <libxml/xmlerror.h> +#include <libxml/threads.h> +#include <libxml/globals.h> + +#define MAX_DELEGATE 50 +#define MAX_CATAL_DEPTH 50 + +#ifdef _WIN32 +# define PATH_SEAPARATOR ';' +#else +# define PATH_SEAPARATOR ':' +#endif + +/** + * TODO: + * + * macro to flag unimplemented blocks + * XML_CATALOG_PREFER user env to select between system/public prefered + * option. C.f. Richard Tobin <richard@cogsci.ed.ac.uk> + *> Just FYI, I am using an environment variable XML_CATALOG_PREFER with + *> values "system" and "public". I have made the default be "system" to + *> match yours. + */ +#define TODO \ + xmlGenericError(xmlGenericErrorContext, \ + "Unimplemented block at %s:%d\n", \ + __FILE__, __LINE__); + +#define XML_URN_PUBID "urn:publicid:" +#define XML_CATAL_BREAK ((xmlChar *) -1) +#ifndef XML_XML_DEFAULT_CATALOG +#define XML_XML_DEFAULT_CATALOG "file:///etc/xml/catalog" +#endif +#ifndef XML_SGML_DEFAULT_CATALOG +#define XML_SGML_DEFAULT_CATALOG "file:///etc/sgml/catalog" +#endif + +#if defined(_WIN32) && defined(_MSC_VER) +#undef XML_XML_DEFAULT_CATALOG +static char XML_XML_DEFAULT_CATALOG[256] = "file:///etc/xml/catalog"; +#if defined(_WIN32_WCE) +/* Windows CE don't have a A variant */ +#define GetModuleHandleA GetModuleHandle +#define GetModuleFileNameA GetModuleFileName +#else +void* __stdcall GetModuleHandleA(const char*); +unsigned long __stdcall GetModuleFileNameA(void*, char*, unsigned long); +#endif +#endif + +static xmlChar *xmlCatalogNormalizePublic(const xmlChar *pubID); +static int xmlExpandCatalog(xmlCatalogPtr catal, const char *filename); + +/************************************************************************ + * * + * Types, all private * + * * + ************************************************************************/ + +typedef enum { + XML_CATA_REMOVED = -1, + XML_CATA_NONE = 0, + XML_CATA_CATALOG, + XML_CATA_BROKEN_CATALOG, + XML_CATA_NEXT_CATALOG, + XML_CATA_GROUP, + XML_CATA_PUBLIC, + XML_CATA_SYSTEM, + XML_CATA_REWRITE_SYSTEM, + XML_CATA_DELEGATE_PUBLIC, + XML_CATA_DELEGATE_SYSTEM, + XML_CATA_URI, + XML_CATA_REWRITE_URI, + XML_CATA_DELEGATE_URI, + SGML_CATA_SYSTEM, + SGML_CATA_PUBLIC, + SGML_CATA_ENTITY, + SGML_CATA_PENTITY, + SGML_CATA_DOCTYPE, + SGML_CATA_LINKTYPE, + SGML_CATA_NOTATION, + SGML_CATA_DELEGATE, + SGML_CATA_BASE, + SGML_CATA_CATALOG, + SGML_CATA_DOCUMENT, + SGML_CATA_SGMLDECL +} xmlCatalogEntryType; + +typedef struct _xmlCatalogEntry xmlCatalogEntry; +typedef xmlCatalogEntry *xmlCatalogEntryPtr; +struct _xmlCatalogEntry { + struct _xmlCatalogEntry *next; + struct _xmlCatalogEntry *parent; + struct _xmlCatalogEntry *children; + xmlCatalogEntryType type; + xmlChar *name; + xmlChar *value; + xmlChar *URL; /* The expanded URL using the base */ + xmlCatalogPrefer prefer; + int dealloc; + int depth; + struct _xmlCatalogEntry *group; +}; + +typedef enum { + XML_XML_CATALOG_TYPE = 1, + XML_SGML_CATALOG_TYPE +} xmlCatalogType; + +#define XML_MAX_SGML_CATA_DEPTH 10 +struct _xmlCatalog { + xmlCatalogType type; /* either XML or SGML */ + + /* + * SGML Catalogs are stored as a simple hash table of catalog entries + * Catalog stack to check against overflows when building the + * SGML catalog + */ + char *catalTab[XML_MAX_SGML_CATA_DEPTH]; /* stack of catals */ + int catalNr; /* Number of current catal streams */ + int catalMax; /* Max number of catal streams */ + xmlHashTablePtr sgml; + + /* + * XML Catalogs are stored as a tree of Catalog entries + */ + xmlCatalogPrefer prefer; + xmlCatalogEntryPtr xml; +}; + +/************************************************************************ + * * + * Global variables * + * * + ************************************************************************/ + +/* + * Those are preferences + */ +static int xmlDebugCatalogs = 0; /* used for debugging */ +static xmlCatalogAllow xmlCatalogDefaultAllow = XML_CATA_ALLOW_ALL; +static xmlCatalogPrefer xmlCatalogDefaultPrefer = XML_CATA_PREFER_PUBLIC; + +/* + * Hash table containing all the trees of XML catalogs parsed by + * the application. + */ +static xmlHashTablePtr xmlCatalogXMLFiles = NULL; + +/* + * The default catalog in use by the application + */ +static xmlCatalogPtr xmlDefaultCatalog = NULL; + +/* + * A mutex for modifying the shared global catalog(s) + * xmlDefaultCatalog tree. + * It also protects xmlCatalogXMLFiles + * The core of this readers/writer scheme is in xmlFetchXMLCatalogFile() + */ +static xmlRMutexPtr xmlCatalogMutex = NULL; + +/* + * Whether the catalog support was initialized. + */ +static int xmlCatalogInitialized = 0; + +/************************************************************************ + * * + * Catalog error handlers * + * * + ************************************************************************/ + +/** + * xmlCatalogErrMemory: + * @extra: extra informations + * + * Handle an out of memory condition + */ +static void +xmlCatalogErrMemory(const char *extra) +{ + __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_CATALOG, + XML_ERR_NO_MEMORY, XML_ERR_ERROR, NULL, 0, + extra, NULL, NULL, 0, 0, + "Memory allocation failed : %s\n", extra); +} + +/** + * xmlCatalogErr: + * @catal: the Catalog entry + * @node: the context node + * @msg: the error message + * @extra: extra informations + * + * Handle a catalog error + */ +static void +xmlCatalogErr(xmlCatalogEntryPtr catal, xmlNodePtr node, int error, + const char *msg, const xmlChar *str1, const xmlChar *str2, + const xmlChar *str3) +{ + __xmlRaiseError(NULL, NULL, NULL, catal, node, XML_FROM_CATALOG, + error, XML_ERR_ERROR, NULL, 0, + (const char *) str1, (const char *) str2, + (const char *) str3, 0, 0, + msg, str1, str2, str3); +} + + +/************************************************************************ + * * + * Allocation and Freeing * + * * + ************************************************************************/ + +/** + * xmlNewCatalogEntry: + * @type: type of entry + * @name: name of the entry + * @value: value of the entry + * @prefer: the PUBLIC vs. SYSTEM current preference value + * @group: for members of a group, the group entry + * + * create a new Catalog entry, this type is shared both by XML and + * SGML catalogs, but the acceptable types values differs. + * + * Returns the xmlCatalogEntryPtr or NULL in case of error + */ +static xmlCatalogEntryPtr +xmlNewCatalogEntry(xmlCatalogEntryType type, const xmlChar *name, + const xmlChar *value, const xmlChar *URL, xmlCatalogPrefer prefer, + xmlCatalogEntryPtr group) { + xmlCatalogEntryPtr ret; + xmlChar *normid = NULL; + + ret = (xmlCatalogEntryPtr) xmlMalloc(sizeof(xmlCatalogEntry)); + if (ret == NULL) { + xmlCatalogErrMemory("allocating catalog entry"); + return(NULL); + } + ret->next = NULL; + ret->parent = NULL; + ret->children = NULL; + ret->type = type; + if (type == XML_CATA_PUBLIC || type == XML_CATA_DELEGATE_PUBLIC) { + normid = xmlCatalogNormalizePublic(name); + if (normid != NULL) + name = (*normid != 0 ? normid : NULL); + } + if (name != NULL) + ret->name = xmlStrdup(name); + else + ret->name = NULL; + if (normid != NULL) + xmlFree(normid); + if (value != NULL) + ret->value = xmlStrdup(value); + else + ret->value = NULL; + if (URL == NULL) + URL = value; + if (URL != NULL) + ret->URL = xmlStrdup(URL); + else + ret->URL = NULL; + ret->prefer = prefer; + ret->dealloc = 0; + ret->depth = 0; + ret->group = group; + return(ret); +} + +static void +xmlFreeCatalogEntryList(xmlCatalogEntryPtr ret); + +/** + * xmlFreeCatalogEntry: + * @ret: a Catalog entry + * + * Free the memory allocated to a Catalog entry + */ +static void +xmlFreeCatalogEntry(xmlCatalogEntryPtr ret) { + if (ret == NULL) + return; + /* + * Entries stored in the file hash must be deallocated + * only by the file hash cleaner ! + */ + if (ret->dealloc == 1) + return; + + if (xmlDebugCatalogs) { + if (ret->name != NULL) + xmlGenericError(xmlGenericErrorContext, + "Free catalog entry %s\n", ret->name); + else if (ret->value != NULL) + xmlGenericError(xmlGenericErrorContext, + "Free catalog entry %s\n", ret->value); + else + xmlGenericError(xmlGenericErrorContext, + "Free catalog entry\n"); + } + + if (ret->name != NULL) + xmlFree(ret->name); + if (ret->value != NULL) + xmlFree(ret->value); + if (ret->URL != NULL) + xmlFree(ret->URL); + xmlFree(ret); +} + +/** + * xmlFreeCatalogEntryList: + * @ret: a Catalog entry list + * + * Free the memory allocated to a full chained list of Catalog entries + */ +static void +xmlFreeCatalogEntryList(xmlCatalogEntryPtr ret) { + xmlCatalogEntryPtr next; + + while (ret != NULL) { + next = ret->next; + xmlFreeCatalogEntry(ret); + ret = next; + } +} + +/** + * xmlFreeCatalogHashEntryList: + * @ret: a Catalog entry list + * + * Free the memory allocated to list of Catalog entries from the + * catalog file hash. + */ +static void +xmlFreeCatalogHashEntryList(xmlCatalogEntryPtr catal) { + xmlCatalogEntryPtr children, next; + + if (catal == NULL) + return; + + children = catal->children; + while (children != NULL) { + next = children->next; + children->dealloc = 0; + children->children = NULL; + xmlFreeCatalogEntry(children); + children = next; + } + catal->dealloc = 0; + xmlFreeCatalogEntry(catal); +} + +/** + * xmlCreateNewCatalog: + * @type: type of catalog + * @prefer: the PUBLIC vs. SYSTEM current preference value + * + * create a new Catalog, this type is shared both by XML and + * SGML catalogs, but the acceptable types values differs. + * + * Returns the xmlCatalogPtr or NULL in case of error + */ +static xmlCatalogPtr +xmlCreateNewCatalog(xmlCatalogType type, xmlCatalogPrefer prefer) { + xmlCatalogPtr ret; + + ret = (xmlCatalogPtr) xmlMalloc(sizeof(xmlCatalog)); + if (ret == NULL) { + xmlCatalogErrMemory("allocating catalog"); + return(NULL); + } + memset(ret, 0, sizeof(xmlCatalog)); + ret->type = type; + ret->catalNr = 0; + ret->catalMax = XML_MAX_SGML_CATA_DEPTH; + ret->prefer = prefer; + if (ret->type == XML_SGML_CATALOG_TYPE) + ret->sgml = xmlHashCreate(10); + return(ret); +} + +/** + * xmlFreeCatalog: + * @catal: a Catalog + * + * Free the memory allocated to a Catalog + */ +void +xmlFreeCatalog(xmlCatalogPtr catal) { + if (catal == NULL) + return; + if (catal->xml != NULL) + xmlFreeCatalogEntryList(catal->xml); + if (catal->sgml != NULL) + xmlHashFree(catal->sgml, + (xmlHashDeallocator) xmlFreeCatalogEntry); + xmlFree(catal); +} + +/************************************************************************ + * * + * Serializing Catalogs * + * * + ************************************************************************/ + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlCatalogDumpEntry: + * @entry: the catalog entry + * @out: the file. + * + * Serialize an SGML Catalog entry + */ +static void +xmlCatalogDumpEntry(xmlCatalogEntryPtr entry, FILE *out) { + if ((entry == NULL) || (out == NULL)) + return; + switch (entry->type) { + case SGML_CATA_ENTITY: + fprintf(out, "ENTITY "); break; + case SGML_CATA_PENTITY: + fprintf(out, "ENTITY %%"); break; + case SGML_CATA_DOCTYPE: + fprintf(out, "DOCTYPE "); break; + case SGML_CATA_LINKTYPE: + fprintf(out, "LINKTYPE "); break; + case SGML_CATA_NOTATION: + fprintf(out, "NOTATION "); break; + case SGML_CATA_PUBLIC: + fprintf(out, "PUBLIC "); break; + case SGML_CATA_SYSTEM: + fprintf(out, "SYSTEM "); break; + case SGML_CATA_DELEGATE: + fprintf(out, "DELEGATE "); break; + case SGML_CATA_BASE: + fprintf(out, "BASE "); break; + case SGML_CATA_CATALOG: + fprintf(out, "CATALOG "); break; + case SGML_CATA_DOCUMENT: + fprintf(out, "DOCUMENT "); break; + case SGML_CATA_SGMLDECL: + fprintf(out, "SGMLDECL "); break; + default: + return; + } + switch (entry->type) { + case SGML_CATA_ENTITY: + case SGML_CATA_PENTITY: + case SGML_CATA_DOCTYPE: + case SGML_CATA_LINKTYPE: + case SGML_CATA_NOTATION: + fprintf(out, "%s", (const char *) entry->name); break; + case SGML_CATA_PUBLIC: + case SGML_CATA_SYSTEM: + case SGML_CATA_SGMLDECL: + case SGML_CATA_DOCUMENT: + case SGML_CATA_CATALOG: + case SGML_CATA_BASE: + case SGML_CATA_DELEGATE: + fprintf(out, "\"%s\"", entry->name); break; + default: + break; + } + switch (entry->type) { + case SGML_CATA_ENTITY: + case SGML_CATA_PENTITY: + case SGML_CATA_DOCTYPE: + case SGML_CATA_LINKTYPE: + case SGML_CATA_NOTATION: + case SGML_CATA_PUBLIC: + case SGML_CATA_SYSTEM: + case SGML_CATA_DELEGATE: + fprintf(out, " \"%s\"", entry->value); break; + default: + break; + } + fprintf(out, "\n"); +} + +/** + * xmlDumpXMLCatalogNode: + * @catal: top catalog entry + * @catalog: pointer to the xml tree + * @doc: the containing document + * @ns: the current namespace + * @cgroup: group node for group members + * + * Serializes a Catalog entry, called by xmlDumpXMLCatalog and recursively + * for group entries + */ +static void xmlDumpXMLCatalogNode(xmlCatalogEntryPtr catal, xmlNodePtr catalog, + xmlDocPtr doc, xmlNsPtr ns, xmlCatalogEntryPtr cgroup) { + xmlNodePtr node; + xmlCatalogEntryPtr cur; + /* + * add all the catalog entries + */ + cur = catal; + while (cur != NULL) { + if (cur->group == cgroup) { + switch (cur->type) { + case XML_CATA_REMOVED: + break; + case XML_CATA_BROKEN_CATALOG: + case XML_CATA_CATALOG: + if (cur == catal) { + cur = cur->children; + continue; + } + break; + case XML_CATA_NEXT_CATALOG: + node = xmlNewDocNode(doc, ns, BAD_CAST "nextCatalog", NULL); + xmlSetProp(node, BAD_CAST "catalog", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_NONE: + break; + case XML_CATA_GROUP: + node = xmlNewDocNode(doc, ns, BAD_CAST "group", NULL); + xmlSetProp(node, BAD_CAST "id", cur->name); + if (cur->value != NULL) { + xmlNsPtr xns; + xns = xmlSearchNsByHref(doc, node, XML_XML_NAMESPACE); + if (xns != NULL) + xmlSetNsProp(node, xns, BAD_CAST "base", + cur->value); + } + switch (cur->prefer) { + case XML_CATA_PREFER_NONE: + break; + case XML_CATA_PREFER_PUBLIC: + xmlSetProp(node, BAD_CAST "prefer", BAD_CAST "public"); + break; + case XML_CATA_PREFER_SYSTEM: + xmlSetProp(node, BAD_CAST "prefer", BAD_CAST "system"); + break; + } + xmlDumpXMLCatalogNode(cur->next, node, doc, ns, cur); + xmlAddChild(catalog, node); + break; + case XML_CATA_PUBLIC: + node = xmlNewDocNode(doc, ns, BAD_CAST "public", NULL); + xmlSetProp(node, BAD_CAST "publicId", cur->name); + xmlSetProp(node, BAD_CAST "uri", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_SYSTEM: + node = xmlNewDocNode(doc, ns, BAD_CAST "system", NULL); + xmlSetProp(node, BAD_CAST "systemId", cur->name); + xmlSetProp(node, BAD_CAST "uri", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_REWRITE_SYSTEM: + node = xmlNewDocNode(doc, ns, BAD_CAST "rewriteSystem", NULL); + xmlSetProp(node, BAD_CAST "systemIdStartString", cur->name); + xmlSetProp(node, BAD_CAST "rewritePrefix", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_DELEGATE_PUBLIC: + node = xmlNewDocNode(doc, ns, BAD_CAST "delegatePublic", NULL); + xmlSetProp(node, BAD_CAST "publicIdStartString", cur->name); + xmlSetProp(node, BAD_CAST "catalog", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_DELEGATE_SYSTEM: + node = xmlNewDocNode(doc, ns, BAD_CAST "delegateSystem", NULL); + xmlSetProp(node, BAD_CAST "systemIdStartString", cur->name); + xmlSetProp(node, BAD_CAST "catalog", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_URI: + node = xmlNewDocNode(doc, ns, BAD_CAST "uri", NULL); + xmlSetProp(node, BAD_CAST "name", cur->name); + xmlSetProp(node, BAD_CAST "uri", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_REWRITE_URI: + node = xmlNewDocNode(doc, ns, BAD_CAST "rewriteURI", NULL); + xmlSetProp(node, BAD_CAST "uriStartString", cur->name); + xmlSetProp(node, BAD_CAST "rewritePrefix", cur->value); + xmlAddChild(catalog, node); + break; + case XML_CATA_DELEGATE_URI: + node = xmlNewDocNode(doc, ns, BAD_CAST "delegateURI", NULL); + xmlSetProp(node, BAD_CAST "uriStartString", cur->name); + xmlSetProp(node, BAD_CAST "catalog", cur->value); + xmlAddChild(catalog, node); + break; + case SGML_CATA_SYSTEM: + case SGML_CATA_PUBLIC: + case SGML_CATA_ENTITY: + case SGML_CATA_PENTITY: + case SGML_CATA_DOCTYPE: + case SGML_CATA_LINKTYPE: + case SGML_CATA_NOTATION: + case SGML_CATA_DELEGATE: + case SGML_CATA_BASE: + case SGML_CATA_CATALOG: + case SGML_CATA_DOCUMENT: + case SGML_CATA_SGMLDECL: + break; + } + } + cur = cur->next; + } +} + +static int +xmlDumpXMLCatalog(FILE *out, xmlCatalogEntryPtr catal) { + int ret; + xmlDocPtr doc; + xmlNsPtr ns; + xmlDtdPtr dtd; + xmlNodePtr catalog; + xmlOutputBufferPtr buf; + + /* + * Rebuild a catalog + */ + doc = xmlNewDoc(NULL); + if (doc == NULL) + return(-1); + dtd = xmlNewDtd(doc, BAD_CAST "catalog", + BAD_CAST "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN", +BAD_CAST "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"); + + xmlAddChild((xmlNodePtr) doc, (xmlNodePtr) dtd); + + ns = xmlNewNs(NULL, XML_CATALOGS_NAMESPACE, NULL); + if (ns == NULL) { + xmlFreeDoc(doc); + return(-1); + } + catalog = xmlNewDocNode(doc, ns, BAD_CAST "catalog", NULL); + if (catalog == NULL) { + xmlFreeNs(ns); + xmlFreeDoc(doc); + return(-1); + } + catalog->nsDef = ns; + xmlAddChild((xmlNodePtr) doc, catalog); + + xmlDumpXMLCatalogNode(catal, catalog, doc, ns, NULL); + + /* + * reserialize it + */ + buf = xmlOutputBufferCreateFile(out, NULL); + if (buf == NULL) { + xmlFreeDoc(doc); + return(-1); + } + ret = xmlSaveFormatFileTo(buf, doc, NULL, 1); + + /* + * Free it + */ + xmlFreeDoc(doc); + + return(ret); +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +/************************************************************************ + * * + * Converting SGML Catalogs to XML * + * * + ************************************************************************/ + +/** + * xmlCatalogConvertEntry: + * @entry: the entry + * @catal: pointer to the catalog being converted + * + * Convert one entry from the catalog + */ +static void +xmlCatalogConvertEntry(xmlCatalogEntryPtr entry, xmlCatalogPtr catal) { + if ((entry == NULL) || (catal == NULL) || (catal->sgml == NULL) || + (catal->xml == NULL)) + return; + switch (entry->type) { + case SGML_CATA_ENTITY: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_PENTITY: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_DOCTYPE: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_LINKTYPE: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_NOTATION: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_PUBLIC: + entry->type = XML_CATA_PUBLIC; + break; + case SGML_CATA_SYSTEM: + entry->type = XML_CATA_SYSTEM; + break; + case SGML_CATA_DELEGATE: + entry->type = XML_CATA_DELEGATE_PUBLIC; + break; + case SGML_CATA_CATALOG: + entry->type = XML_CATA_CATALOG; + break; + default: + xmlHashRemoveEntry(catal->sgml, entry->name, + (xmlHashDeallocator) xmlFreeCatalogEntry); + return; + } + /* + * Conversion successful, remove from the SGML catalog + * and add it to the default XML one + */ + xmlHashRemoveEntry(catal->sgml, entry->name, NULL); + entry->parent = catal->xml; + entry->next = NULL; + if (catal->xml->children == NULL) + catal->xml->children = entry; + else { + xmlCatalogEntryPtr prev; + + prev = catal->xml->children; + while (prev->next != NULL) + prev = prev->next; + prev->next = entry; + } +} + +/** + * xmlConvertSGMLCatalog: + * @catal: the catalog + * + * Convert all the SGML catalog entries as XML ones + * + * Returns the number of entries converted if successful, -1 otherwise + */ +int +xmlConvertSGMLCatalog(xmlCatalogPtr catal) { + + if ((catal == NULL) || (catal->type != XML_SGML_CATALOG_TYPE)) + return(-1); + + if (xmlDebugCatalogs) { + xmlGenericError(xmlGenericErrorContext, + "Converting SGML catalog to XML\n"); + } + xmlHashScan(catal->sgml, + (xmlHashScanner) xmlCatalogConvertEntry, + &catal); + return(0); +} + +/************************************************************************ + * * + * Helper function * + * * + ************************************************************************/ + +/** + * xmlCatalogUnWrapURN: + * @urn: an "urn:publicid:" to unwrap + * + * Expand the URN into the equivalent Public Identifier + * + * Returns the new identifier or NULL, the string must be deallocated + * by the caller. + */ +static xmlChar * +xmlCatalogUnWrapURN(const xmlChar *urn) { + xmlChar result[2000]; + unsigned int i = 0; + + if (xmlStrncmp(urn, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) + return(NULL); + urn += sizeof(XML_URN_PUBID) - 1; + + while (*urn != 0) { + if (i > sizeof(result) - 4) + break; + if (*urn == '+') { + result[i++] = ' '; + urn++; + } else if (*urn == ':') { + result[i++] = '/'; + result[i++] = '/'; + urn++; + } else if (*urn == ';') { + result[i++] = ':'; + result[i++] = ':'; + urn++; + } else if (*urn == '%') { + if ((urn[1] == '2') && (urn[2] == 'B')) + result[i++] = '+'; + else if ((urn[1] == '3') && (urn[2] == 'A')) + result[i++] = ':'; + else if ((urn[1] == '2') && (urn[2] == 'F')) + result[i++] = '/'; + else if ((urn[1] == '3') && (urn[2] == 'B')) + result[i++] = ';'; + else if ((urn[1] == '2') && (urn[2] == '7')) + result[i++] = '\''; + else if ((urn[1] == '3') && (urn[2] == 'F')) + result[i++] = '?'; + else if ((urn[1] == '2') && (urn[2] == '3')) + result[i++] = '#'; + else if ((urn[1] == '2') && (urn[2] == '5')) + result[i++] = '%'; + else { + result[i++] = *urn; + urn++; + continue; + } + urn += 3; + } else { + result[i++] = *urn; + urn++; + } + } + result[i] = 0; + + return(xmlStrdup(result)); +} + +/** + * xmlParseCatalogFile: + * @filename: the filename + * + * parse an XML file and build a tree. It's like xmlParseFile() + * except it bypass all catalog lookups. + * + * Returns the resulting document tree or NULL in case of error + */ + +xmlDocPtr +xmlParseCatalogFile(const char *filename) { + xmlDocPtr ret; + xmlParserCtxtPtr ctxt; + char *directory = NULL; + xmlParserInputPtr inputStream; + xmlParserInputBufferPtr buf; + + ctxt = xmlNewParserCtxt(); + if (ctxt == NULL) { +#ifdef LIBXML_SAX1_ENABLED + if (xmlDefaultSAXHandler.error != NULL) { + xmlDefaultSAXHandler.error(NULL, "out of memory\n"); + } +#endif + return(NULL); + } + + buf = xmlParserInputBufferCreateFilename(filename, XML_CHAR_ENCODING_NONE); + if (buf == NULL) { + xmlFreeParserCtxt(ctxt); + return(NULL); + } + + inputStream = xmlNewInputStream(ctxt); + if (inputStream == NULL) { + xmlFreeParserCtxt(ctxt); + return(NULL); + } + + inputStream->filename = (char *) xmlCanonicPath((const xmlChar *)filename); + inputStream->buf = buf; + inputStream->base = inputStream->buf->buffer->content; + inputStream->cur = inputStream->buf->buffer->content; + inputStream->end = + &inputStream->buf->buffer->content[inputStream->buf->buffer->use]; + + inputPush(ctxt, inputStream); + if ((ctxt->directory == NULL) && (directory == NULL)) + directory = xmlParserGetDirectory(filename); + if ((ctxt->directory == NULL) && (directory != NULL)) + ctxt->directory = directory; + ctxt->valid = 0; + ctxt->validate = 0; + ctxt->loadsubset = 0; + ctxt->pedantic = 0; + ctxt->dictNames = 1; + + xmlParseDocument(ctxt); + + if (ctxt->wellFormed) + ret = ctxt->myDoc; + else { + ret = NULL; + xmlFreeDoc(ctxt->myDoc); + ctxt->myDoc = NULL; + } + xmlFreeParserCtxt(ctxt); + + return(ret); +} + +/** + * xmlLoadFileContent: + * @filename: a file path + * + * Load a file content into memory. + * + * Returns a pointer to the 0 terminated string or NULL in case of error + */ +static xmlChar * +xmlLoadFileContent(const char *filename) +{ +#ifdef HAVE_STAT + int fd; +#else + FILE *fd; +#endif + int len; + long size; + +#ifdef HAVE_STAT + struct stat info; +#endif + xmlChar *content; + + if (filename == NULL) + return (NULL); + +#ifdef HAVE_STAT + if (stat(filename, &info) < 0) + return (NULL); +#endif + +#ifdef HAVE_STAT + if ((fd = open(filename, O_RDONLY)) < 0) +#else + if ((fd = fopen(filename, "rb")) == NULL) +#endif + { + return (NULL); + } +#ifdef HAVE_STAT + size = info.st_size; +#else + if (fseek(fd, 0, SEEK_END) || (size = ftell(fd)) == EOF || fseek(fd, 0, SEEK_SET)) { /* File operations denied? ok, just close and return failure */ + fclose(fd); + return (NULL); + } +#endif + content = xmlMallocAtomic(size + 10); + if (content == NULL) { + xmlCatalogErrMemory("allocating catalog data"); + return (NULL); + } +#ifdef HAVE_STAT + len = read(fd, content, size); +#else + len = fread(content, 1, size, fd); +#endif + if (len < 0) { + xmlFree(content); + return (NULL); + } +#ifdef HAVE_STAT + close(fd); +#else + fclose(fd); +#endif + content[len] = 0; + + return(content); +} + +/** + * xmlCatalogNormalizePublic: + * @pubID: the public ID string + * + * Normalizes the Public Identifier + * + * Implements 6.2. Public Identifier Normalization + * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Returns the new string or NULL, the string must be deallocated + * by the caller. + */ +static xmlChar * +xmlCatalogNormalizePublic(const xmlChar *pubID) +{ + int ok = 1; + int white; + const xmlChar *p; + xmlChar *ret; + xmlChar *q; + + if (pubID == NULL) + return(NULL); + + white = 1; + for (p = pubID;*p != 0 && ok;p++) { + if (!xmlIsBlank_ch(*p)) + white = 0; + else if (*p == 0x20 && !white) + white = 1; + else + ok = 0; + } + if (ok && !white) /* is normalized */ + return(NULL); + + ret = xmlStrdup(pubID); + q = ret; + white = 0; + for (p = pubID;*p != 0;p++) { + if (xmlIsBlank_ch(*p)) { + if (q != ret) + white = 1; + } else { + if (white) { + *(q++) = 0x20; + white = 0; + } + *(q++) = *p; + } + } + *q = 0; + return(ret); +} + +/************************************************************************ + * * + * The XML Catalog parser * + * * + ************************************************************************/ + +static xmlCatalogEntryPtr +xmlParseXMLCatalogFile(xmlCatalogPrefer prefer, const xmlChar *filename); +static void +xmlParseXMLCatalogNodeList(xmlNodePtr cur, xmlCatalogPrefer prefer, + xmlCatalogEntryPtr parent, xmlCatalogEntryPtr cgroup); +static xmlChar * +xmlCatalogListXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID, + const xmlChar *sysID); +static xmlChar * +xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI); + + +/** + * xmlGetXMLCatalogEntryType: + * @name: the name + * + * lookup the internal type associated to an XML catalog entry name + * + * Returns the type associated with that name + */ +static xmlCatalogEntryType +xmlGetXMLCatalogEntryType(const xmlChar *name) { + xmlCatalogEntryType type = XML_CATA_NONE; + if (xmlStrEqual(name, (const xmlChar *) "system")) + type = XML_CATA_SYSTEM; + else if (xmlStrEqual(name, (const xmlChar *) "public")) + type = XML_CATA_PUBLIC; + else if (xmlStrEqual(name, (const xmlChar *) "rewriteSystem")) + type = XML_CATA_REWRITE_SYSTEM; + else if (xmlStrEqual(name, (const xmlChar *) "delegatePublic")) + type = XML_CATA_DELEGATE_PUBLIC; + else if (xmlStrEqual(name, (const xmlChar *) "delegateSystem")) + type = XML_CATA_DELEGATE_SYSTEM; + else if (xmlStrEqual(name, (const xmlChar *) "uri")) + type = XML_CATA_URI; + else if (xmlStrEqual(name, (const xmlChar *) "rewriteURI")) + type = XML_CATA_REWRITE_URI; + else if (xmlStrEqual(name, (const xmlChar *) "delegateURI")) + type = XML_CATA_DELEGATE_URI; + else if (xmlStrEqual(name, (const xmlChar *) "nextCatalog")) + type = XML_CATA_NEXT_CATALOG; + else if (xmlStrEqual(name, (const xmlChar *) "catalog")) + type = XML_CATA_CATALOG; + return(type); +} + +/** + * xmlParseXMLCatalogOneNode: + * @cur: the XML node + * @type: the type of Catalog entry + * @name: the name of the node + * @attrName: the attribute holding the value + * @uriAttrName: the attribute holding the URI-Reference + * @prefer: the PUBLIC vs. SYSTEM current preference value + * @cgroup: the group which includes this node + * + * Finishes the examination of an XML tree node of a catalog and build + * a Catalog entry from it. + * + * Returns the new Catalog entry node or NULL in case of error. + */ +static xmlCatalogEntryPtr +xmlParseXMLCatalogOneNode(xmlNodePtr cur, xmlCatalogEntryType type, + const xmlChar *name, const xmlChar *attrName, + const xmlChar *uriAttrName, xmlCatalogPrefer prefer, + xmlCatalogEntryPtr cgroup) { + int ok = 1; + xmlChar *uriValue; + xmlChar *nameValue = NULL; + xmlChar *base = NULL; + xmlChar *URL = NULL; + xmlCatalogEntryPtr ret = NULL; + + if (attrName != NULL) { + nameValue = xmlGetProp(cur, attrName); + if (nameValue == NULL) { + xmlCatalogErr(ret, cur, XML_CATALOG_MISSING_ATTR, + "%s entry lacks '%s'\n", name, attrName, NULL); + ok = 0; + } + } + uriValue = xmlGetProp(cur, uriAttrName); + if (uriValue == NULL) { + xmlCatalogErr(ret, cur, XML_CATALOG_MISSING_ATTR, + "%s entry lacks '%s'\n", name, uriAttrName, NULL); + ok = 0; + } + if (!ok) { + if (nameValue != NULL) + xmlFree(nameValue); + if (uriValue != NULL) + xmlFree(uriValue); + return(NULL); + } + + base = xmlNodeGetBase(cur->doc, cur); + URL = xmlBuildURI(uriValue, base); + if (URL != NULL) { + if (xmlDebugCatalogs > 1) { + if (nameValue != NULL) + xmlGenericError(xmlGenericErrorContext, + "Found %s: '%s' '%s'\n", name, nameValue, URL); + else + xmlGenericError(xmlGenericErrorContext, + "Found %s: '%s'\n", name, URL); + } + ret = xmlNewCatalogEntry(type, nameValue, uriValue, URL, prefer, cgroup); + } else { + xmlCatalogErr(ret, cur, XML_CATALOG_ENTRY_BROKEN, + "%s entry '%s' broken ?: %s\n", name, uriAttrName, uriValue); + } + if (nameValue != NULL) + xmlFree(nameValue); + if (uriValue != NULL) + xmlFree(uriValue); + if (base != NULL) + xmlFree(base); + if (URL != NULL) + xmlFree(URL); + return(ret); +} + +/** + * xmlParseXMLCatalogNode: + * @cur: the XML node + * @prefer: the PUBLIC vs. SYSTEM current preference value + * @parent: the parent Catalog entry + * @cgroup: the group which includes this node + * + * Examines an XML tree node of a catalog and build + * a Catalog entry from it adding it to its parent. The examination can + * be recursive. + */ +static void +xmlParseXMLCatalogNode(xmlNodePtr cur, xmlCatalogPrefer prefer, + xmlCatalogEntryPtr parent, xmlCatalogEntryPtr cgroup) +{ + xmlChar *base = NULL; + xmlCatalogEntryPtr entry = NULL; + + if (cur == NULL) + return; + if (xmlStrEqual(cur->name, BAD_CAST "group")) { + xmlChar *prop; + xmlCatalogPrefer pref = XML_CATA_PREFER_NONE; + + prop = xmlGetProp(cur, BAD_CAST "prefer"); + if (prop != NULL) { + if (xmlStrEqual(prop, BAD_CAST "system")) { + prefer = XML_CATA_PREFER_SYSTEM; + } else if (xmlStrEqual(prop, BAD_CAST "public")) { + prefer = XML_CATA_PREFER_PUBLIC; + } else { + xmlCatalogErr(parent, cur, XML_CATALOG_PREFER_VALUE, + "Invalid value for prefer: '%s'\n", + prop, NULL, NULL); + } + xmlFree(prop); + pref = prefer; + } + prop = xmlGetProp(cur, BAD_CAST "id"); + base = xmlGetNsProp(cur, BAD_CAST "base", XML_XML_NAMESPACE); + entry = xmlNewCatalogEntry(XML_CATA_GROUP, prop, base, NULL, pref, cgroup); + xmlFree(prop); + } else if (xmlStrEqual(cur->name, BAD_CAST "public")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_PUBLIC, + BAD_CAST "public", BAD_CAST "publicId", BAD_CAST "uri", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "system")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_SYSTEM, + BAD_CAST "system", BAD_CAST "systemId", BAD_CAST "uri", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "rewriteSystem")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_REWRITE_SYSTEM, + BAD_CAST "rewriteSystem", BAD_CAST "systemIdStartString", + BAD_CAST "rewritePrefix", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "delegatePublic")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_DELEGATE_PUBLIC, + BAD_CAST "delegatePublic", BAD_CAST "publicIdStartString", + BAD_CAST "catalog", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "delegateSystem")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_DELEGATE_SYSTEM, + BAD_CAST "delegateSystem", BAD_CAST "systemIdStartString", + BAD_CAST "catalog", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "uri")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_URI, + BAD_CAST "uri", BAD_CAST "name", + BAD_CAST "uri", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "rewriteURI")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_REWRITE_URI, + BAD_CAST "rewriteURI", BAD_CAST "uriStartString", + BAD_CAST "rewritePrefix", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "delegateURI")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_DELEGATE_URI, + BAD_CAST "delegateURI", BAD_CAST "uriStartString", + BAD_CAST "catalog", prefer, cgroup); + } else if (xmlStrEqual(cur->name, BAD_CAST "nextCatalog")) { + entry = xmlParseXMLCatalogOneNode(cur, XML_CATA_NEXT_CATALOG, + BAD_CAST "nextCatalog", NULL, + BAD_CAST "catalog", prefer, cgroup); + } + if (entry != NULL) { + if (parent != NULL) { + entry->parent = parent; + if (parent->children == NULL) + parent->children = entry; + else { + xmlCatalogEntryPtr prev; + + prev = parent->children; + while (prev->next != NULL) + prev = prev->next; + prev->next = entry; + } + } + if (entry->type == XML_CATA_GROUP) { + /* + * Recurse to propagate prefer to the subtree + * (xml:base handling is automated) + */ + xmlParseXMLCatalogNodeList(cur->children, prefer, parent, entry); + } + } + if (base != NULL) + xmlFree(base); +} + +/** + * xmlParseXMLCatalogNodeList: + * @cur: the XML node list of siblings + * @prefer: the PUBLIC vs. SYSTEM current preference value + * @parent: the parent Catalog entry + * @cgroup: the group which includes this list + * + * Examines a list of XML sibling nodes of a catalog and build + * a list of Catalog entry from it adding it to the parent. + * The examination will recurse to examine node subtrees. + */ +static void +xmlParseXMLCatalogNodeList(xmlNodePtr cur, xmlCatalogPrefer prefer, + xmlCatalogEntryPtr parent, xmlCatalogEntryPtr cgroup) { + while (cur != NULL) { + if ((cur->ns != NULL) && (cur->ns->href != NULL) && + (xmlStrEqual(cur->ns->href, XML_CATALOGS_NAMESPACE))) { + xmlParseXMLCatalogNode(cur, prefer, parent, cgroup); + } + cur = cur->next; + } + /* TODO: sort the list according to REWRITE lengths and prefer value */ +} + +/** + * xmlParseXMLCatalogFile: + * @prefer: the PUBLIC vs. SYSTEM current preference value + * @filename: the filename for the catalog + * + * Parses the catalog file to extract the XML tree and then analyze the + * tree to build a list of Catalog entries corresponding to this catalog + * + * Returns the resulting Catalog entries list + */ +static xmlCatalogEntryPtr +xmlParseXMLCatalogFile(xmlCatalogPrefer prefer, const xmlChar *filename) { + xmlDocPtr doc; + xmlNodePtr cur; + xmlChar *prop; + xmlCatalogEntryPtr parent = NULL; + + if (filename == NULL) + return(NULL); + + doc = xmlParseCatalogFile((const char *) filename); + if (doc == NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Failed to parse catalog %s\n", filename); + return(NULL); + } + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "%d Parsing catalog %s\n", xmlGetThreadId(), filename); + + cur = xmlDocGetRootElement(doc); + if ((cur != NULL) && (xmlStrEqual(cur->name, BAD_CAST "catalog")) && + (cur->ns != NULL) && (cur->ns->href != NULL) && + (xmlStrEqual(cur->ns->href, XML_CATALOGS_NAMESPACE))) { + + parent = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, + (const xmlChar *)filename, NULL, prefer, NULL); + if (parent == NULL) { + xmlFreeDoc(doc); + return(NULL); + } + + prop = xmlGetProp(cur, BAD_CAST "prefer"); + if (prop != NULL) { + if (xmlStrEqual(prop, BAD_CAST "system")) { + prefer = XML_CATA_PREFER_SYSTEM; + } else if (xmlStrEqual(prop, BAD_CAST "public")) { + prefer = XML_CATA_PREFER_PUBLIC; + } else { + xmlCatalogErr(NULL, cur, XML_CATALOG_PREFER_VALUE, + "Invalid value for prefer: '%s'\n", + prop, NULL, NULL); + } + xmlFree(prop); + } + cur = cur->children; + xmlParseXMLCatalogNodeList(cur, prefer, parent, NULL); + } else { + xmlCatalogErr(NULL, (xmlNodePtr) doc, XML_CATALOG_NOT_CATALOG, + "File %s is not an XML Catalog\n", + filename, NULL, NULL); + xmlFreeDoc(doc); + return(NULL); + } + xmlFreeDoc(doc); + return(parent); +} + +/** + * xmlFetchXMLCatalogFile: + * @catal: an existing but incomplete catalog entry + * + * Fetch and parse the subcatalog referenced by an entry + * + * Returns 0 in case of success, -1 otherwise + */ +static int +xmlFetchXMLCatalogFile(xmlCatalogEntryPtr catal) { + xmlCatalogEntryPtr doc; + + if (catal == NULL) + return(-1); + if (catal->URL == NULL) + return(-1); + if (catal->children != NULL) + return(-1); + + /* + * lock the whole catalog for modification + */ + xmlRMutexLock(xmlCatalogMutex); + if (catal->children != NULL) { + /* Okay someone else did it in the meantime */ + xmlRMutexUnlock(xmlCatalogMutex); + return(0); + } + + if (xmlCatalogXMLFiles != NULL) { + doc = (xmlCatalogEntryPtr) + xmlHashLookup(xmlCatalogXMLFiles, catal->URL); + if (doc != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Found %s in file hash\n", catal->URL); + + if (catal->type == XML_CATA_CATALOG) + catal->children = doc->children; + else + catal->children = doc; + catal->dealloc = 0; + xmlRMutexUnlock(xmlCatalogMutex); + return(0); + } + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "%s not found in file hash\n", catal->URL); + } + + /* + * Fetch and parse. Note that xmlParseXMLCatalogFile does not + * use the existing catalog, there is no recursion allowed at + * that level. + */ + doc = xmlParseXMLCatalogFile(catal->prefer, catal->URL); + if (doc == NULL) { + catal->type = XML_CATA_BROKEN_CATALOG; + xmlRMutexUnlock(xmlCatalogMutex); + return(-1); + } + + if (catal->type == XML_CATA_CATALOG) + catal->children = doc->children; + else + catal->children = doc; + + doc->dealloc = 1; + + if (xmlCatalogXMLFiles == NULL) + xmlCatalogXMLFiles = xmlHashCreate(10); + if (xmlCatalogXMLFiles != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "%s added to file hash\n", catal->URL); + xmlHashAddEntry(xmlCatalogXMLFiles, catal->URL, doc); + } + xmlRMutexUnlock(xmlCatalogMutex); + return(0); +} + +/************************************************************************ + * * + * XML Catalog handling * + * * + ************************************************************************/ + +/** + * xmlAddXMLCatalog: + * @catal: top of an XML catalog + * @type: the type of record to add to the catalog + * @orig: the system, public or prefix to match (or NULL) + * @replace: the replacement value for the match + * + * Add an entry in the XML catalog, it may overwrite existing but + * different entries. + * + * Returns 0 if successful, -1 otherwise + */ +static int +xmlAddXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *type, + const xmlChar *orig, const xmlChar *replace) { + xmlCatalogEntryPtr cur; + xmlCatalogEntryType typ; + int doregister = 0; + + if ((catal == NULL) || + ((catal->type != XML_CATA_CATALOG) && + (catal->type != XML_CATA_BROKEN_CATALOG))) + return(-1); + if (catal->children == NULL) { + xmlFetchXMLCatalogFile(catal); + } + if (catal->children == NULL) + doregister = 1; + + typ = xmlGetXMLCatalogEntryType(type); + if (typ == XML_CATA_NONE) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Failed to add unknown element %s to catalog\n", type); + return(-1); + } + + cur = catal->children; + /* + * Might be a simple "update in place" + */ + if (cur != NULL) { + while (cur != NULL) { + if ((orig != NULL) && (cur->type == typ) && + (xmlStrEqual(orig, cur->name))) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Updating element %s to catalog\n", type); + if (cur->value != NULL) + xmlFree(cur->value); + if (cur->URL != NULL) + xmlFree(cur->URL); + cur->value = xmlStrdup(replace); + cur->URL = xmlStrdup(replace); + return(0); + } + if (cur->next == NULL) + break; + cur = cur->next; + } + } + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Adding element %s to catalog\n", type); + if (cur == NULL) + catal->children = xmlNewCatalogEntry(typ, orig, replace, + NULL, catal->prefer, NULL); + else + cur->next = xmlNewCatalogEntry(typ, orig, replace, + NULL, catal->prefer, NULL); + if (doregister) { + catal->type = XML_CATA_CATALOG; + cur = xmlHashLookup(xmlCatalogXMLFiles, catal->URL); + if (cur != NULL) + cur->children = catal->children; + } + + return(0); +} + +/** + * xmlDelXMLCatalog: + * @catal: top of an XML catalog + * @value: the value to remove from the catalog + * + * Remove entries in the XML catalog where the value or the URI + * is equal to @value + * + * Returns the number of entries removed if successful, -1 otherwise + */ +static int +xmlDelXMLCatalog(xmlCatalogEntryPtr catal, const xmlChar *value) { + xmlCatalogEntryPtr cur; + int ret = 0; + + if ((catal == NULL) || + ((catal->type != XML_CATA_CATALOG) && + (catal->type != XML_CATA_BROKEN_CATALOG))) + return(-1); + if (value == NULL) + return(-1); + if (catal->children == NULL) { + xmlFetchXMLCatalogFile(catal); + } + + /* + * Scan the children + */ + cur = catal->children; + while (cur != NULL) { + if (((cur->name != NULL) && (xmlStrEqual(value, cur->name))) || + (xmlStrEqual(value, cur->value))) { + if (xmlDebugCatalogs) { + if (cur->name != NULL) + xmlGenericError(xmlGenericErrorContext, + "Removing element %s from catalog\n", cur->name); + else + xmlGenericError(xmlGenericErrorContext, + "Removing element %s from catalog\n", cur->value); + } + cur->type = XML_CATA_REMOVED; + } + cur = cur->next; + } + return(ret); +} + +/** + * xmlCatalogXMLResolve: + * @catal: a catalog list + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier for a + * list of catalog entries. + * + * Implements (or tries to) 7.1. External Identifier Resolution + * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Returns the URI of the resource or NULL if not found + */ +static xmlChar * +xmlCatalogXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID, + const xmlChar *sysID) { + xmlChar *ret = NULL; + xmlCatalogEntryPtr cur; + int haveDelegate = 0; + int haveNext = 0; + + /* + * protection against loops + */ + if (catal->depth > MAX_CATAL_DEPTH) { + xmlCatalogErr(catal, NULL, XML_CATALOG_RECURSION, + "Detected recursion in catalog %s\n", + catal->name, NULL, NULL); + return(NULL); + } + catal->depth++; + + /* + * First tries steps 2/ 3/ 4/ if a system ID is provided. + */ + if (sysID != NULL) { + xmlCatalogEntryPtr rewrite = NULL; + int lenrewrite = 0, len; + cur = catal; + haveDelegate = 0; + while (cur != NULL) { + switch (cur->type) { + case XML_CATA_SYSTEM: + if (xmlStrEqual(sysID, cur->name)) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Found system match %s, using %s\n", + cur->name, cur->URL); + catal->depth--; + return(xmlStrdup(cur->URL)); + } + break; + case XML_CATA_REWRITE_SYSTEM: + len = xmlStrlen(cur->name); + if ((len > lenrewrite) && + (!xmlStrncmp(sysID, cur->name, len))) { + lenrewrite = len; + rewrite = cur; + } + break; + case XML_CATA_DELEGATE_SYSTEM: + if (!xmlStrncmp(sysID, cur->name, xmlStrlen(cur->name))) + haveDelegate++; + break; + case XML_CATA_NEXT_CATALOG: + haveNext++; + break; + default: + break; + } + cur = cur->next; + } + if (rewrite != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Using rewriting rule %s\n", rewrite->name); + ret = xmlStrdup(rewrite->URL); + if (ret != NULL) + ret = xmlStrcat(ret, &sysID[lenrewrite]); + catal->depth--; + return(ret); + } + if (haveDelegate) { + const xmlChar *delegates[MAX_DELEGATE]; + int nbList = 0, i; + + /* + * Assume the entries have been sorted by decreasing substring + * matches when the list was produced. + */ + cur = catal; + while (cur != NULL) { + if ((cur->type == XML_CATA_DELEGATE_SYSTEM) && + (!xmlStrncmp(sysID, cur->name, xmlStrlen(cur->name)))) { + for (i = 0;i < nbList;i++) + if (xmlStrEqual(cur->URL, delegates[i])) + break; + if (i < nbList) { + cur = cur->next; + continue; + } + if (nbList < MAX_DELEGATE) + delegates[nbList++] = cur->URL; + + if (cur->children == NULL) { + xmlFetchXMLCatalogFile(cur); + } + if (cur->children != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Trying system delegate %s\n", cur->URL); + ret = xmlCatalogListXMLResolve( + cur->children, NULL, sysID); + if (ret != NULL) { + catal->depth--; + return(ret); + } + } + } + cur = cur->next; + } + /* + * Apply the cut algorithm explained in 4/ + */ + catal->depth--; + return(XML_CATAL_BREAK); + } + } + /* + * Then tries 5/ 6/ if a public ID is provided + */ + if (pubID != NULL) { + cur = catal; + haveDelegate = 0; + while (cur != NULL) { + switch (cur->type) { + case XML_CATA_PUBLIC: + if (xmlStrEqual(pubID, cur->name)) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Found public match %s\n", cur->name); + catal->depth--; + return(xmlStrdup(cur->URL)); + } + break; + case XML_CATA_DELEGATE_PUBLIC: + if (!xmlStrncmp(pubID, cur->name, xmlStrlen(cur->name)) && + (cur->prefer == XML_CATA_PREFER_PUBLIC)) + haveDelegate++; + break; + case XML_CATA_NEXT_CATALOG: + if (sysID == NULL) + haveNext++; + break; + default: + break; + } + cur = cur->next; + } + if (haveDelegate) { + const xmlChar *delegates[MAX_DELEGATE]; + int nbList = 0, i; + + /* + * Assume the entries have been sorted by decreasing substring + * matches when the list was produced. + */ + cur = catal; + while (cur != NULL) { + if ((cur->type == XML_CATA_DELEGATE_PUBLIC) && + (cur->prefer == XML_CATA_PREFER_PUBLIC) && + (!xmlStrncmp(pubID, cur->name, xmlStrlen(cur->name)))) { + + for (i = 0;i < nbList;i++) + if (xmlStrEqual(cur->URL, delegates[i])) + break; + if (i < nbList) { + cur = cur->next; + continue; + } + if (nbList < MAX_DELEGATE) + delegates[nbList++] = cur->URL; + + if (cur->children == NULL) { + xmlFetchXMLCatalogFile(cur); + } + if (cur->children != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Trying public delegate %s\n", cur->URL); + ret = xmlCatalogListXMLResolve( + cur->children, pubID, NULL); + if (ret != NULL) { + catal->depth--; + return(ret); + } + } + } + cur = cur->next; + } + /* + * Apply the cut algorithm explained in 4/ + */ + catal->depth--; + return(XML_CATAL_BREAK); + } + } + if (haveNext) { + cur = catal; + while (cur != NULL) { + if (cur->type == XML_CATA_NEXT_CATALOG) { + if (cur->children == NULL) { + xmlFetchXMLCatalogFile(cur); + } + if (cur->children != NULL) { + ret = xmlCatalogListXMLResolve(cur->children, pubID, sysID); + if (ret != NULL) { + catal->depth--; + return(ret); + } else if (catal->depth > MAX_CATAL_DEPTH) { + return(NULL); + } + } + } + cur = cur->next; + } + } + + catal->depth--; + return(NULL); +} + +/** + * xmlCatalogXMLResolveURI: + * @catal: a catalog list + * @URI: the URI + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier for a + * list of catalog entries. + * + * Implements (or tries to) 7.2.2. URI Resolution + * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Returns the URI of the resource or NULL if not found + */ +static xmlChar * +xmlCatalogXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) { + xmlChar *ret = NULL; + xmlCatalogEntryPtr cur; + int haveDelegate = 0; + int haveNext = 0; + xmlCatalogEntryPtr rewrite = NULL; + int lenrewrite = 0, len; + + if (catal == NULL) + return(NULL); + + if (URI == NULL) + return(NULL); + + if (catal->depth > MAX_CATAL_DEPTH) { + xmlCatalogErr(catal, NULL, XML_CATALOG_RECURSION, + "Detected recursion in catalog %s\n", + catal->name, NULL, NULL); + return(NULL); + } + + /* + * First tries steps 2/ 3/ 4/ if a system ID is provided. + */ + cur = catal; + haveDelegate = 0; + while (cur != NULL) { + switch (cur->type) { + case XML_CATA_URI: + if (xmlStrEqual(URI, cur->name)) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Found URI match %s\n", cur->name); + return(xmlStrdup(cur->URL)); + } + break; + case XML_CATA_REWRITE_URI: + len = xmlStrlen(cur->name); + if ((len > lenrewrite) && + (!xmlStrncmp(URI, cur->name, len))) { + lenrewrite = len; + rewrite = cur; + } + break; + case XML_CATA_DELEGATE_URI: + if (!xmlStrncmp(URI, cur->name, xmlStrlen(cur->name))) + haveDelegate++; + break; + case XML_CATA_NEXT_CATALOG: + haveNext++; + break; + default: + break; + } + cur = cur->next; + } + if (rewrite != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Using rewriting rule %s\n", rewrite->name); + ret = xmlStrdup(rewrite->URL); + if (ret != NULL) + ret = xmlStrcat(ret, &URI[lenrewrite]); + return(ret); + } + if (haveDelegate) { + const xmlChar *delegates[MAX_DELEGATE]; + int nbList = 0, i; + + /* + * Assume the entries have been sorted by decreasing substring + * matches when the list was produced. + */ + cur = catal; + while (cur != NULL) { + if (((cur->type == XML_CATA_DELEGATE_SYSTEM) || + (cur->type == XML_CATA_DELEGATE_URI)) && + (!xmlStrncmp(URI, cur->name, xmlStrlen(cur->name)))) { + for (i = 0;i < nbList;i++) + if (xmlStrEqual(cur->URL, delegates[i])) + break; + if (i < nbList) { + cur = cur->next; + continue; + } + if (nbList < MAX_DELEGATE) + delegates[nbList++] = cur->URL; + + if (cur->children == NULL) { + xmlFetchXMLCatalogFile(cur); + } + if (cur->children != NULL) { + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Trying URI delegate %s\n", cur->URL); + ret = xmlCatalogListXMLResolveURI( + cur->children, URI); + if (ret != NULL) + return(ret); + } + } + cur = cur->next; + } + /* + * Apply the cut algorithm explained in 4/ + */ + return(XML_CATAL_BREAK); + } + if (haveNext) { + cur = catal; + while (cur != NULL) { + if (cur->type == XML_CATA_NEXT_CATALOG) { + if (cur->children == NULL) { + xmlFetchXMLCatalogFile(cur); + } + if (cur->children != NULL) { + ret = xmlCatalogListXMLResolveURI(cur->children, URI); + if (ret != NULL) + return(ret); + } + } + cur = cur->next; + } + } + + return(NULL); +} + +/** + * xmlCatalogListXMLResolve: + * @catal: a catalog list + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier for a + * list of catalogs + * + * Implements (or tries to) 7.1. External Identifier Resolution + * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Returns the URI of the resource or NULL if not found + */ +static xmlChar * +xmlCatalogListXMLResolve(xmlCatalogEntryPtr catal, const xmlChar *pubID, + const xmlChar *sysID) { + xmlChar *ret = NULL; + xmlChar *urnID = NULL; + xmlChar *normid; + + if (catal == NULL) + return(NULL); + if ((pubID == NULL) && (sysID == NULL)) + return(NULL); + + normid = xmlCatalogNormalizePublic(pubID); + if (normid != NULL) + pubID = (*normid != 0 ? normid : NULL); + + if (!xmlStrncmp(pubID, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) { + urnID = xmlCatalogUnWrapURN(pubID); + if (xmlDebugCatalogs) { + if (urnID == NULL) + xmlGenericError(xmlGenericErrorContext, + "Public URN ID %s expanded to NULL\n", pubID); + else + xmlGenericError(xmlGenericErrorContext, + "Public URN ID expanded to %s\n", urnID); + } + ret = xmlCatalogListXMLResolve(catal, urnID, sysID); + if (urnID != NULL) + xmlFree(urnID); + if (normid != NULL) + xmlFree(normid); + return(ret); + } + if (!xmlStrncmp(sysID, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) { + urnID = xmlCatalogUnWrapURN(sysID); + if (xmlDebugCatalogs) { + if (urnID == NULL) + xmlGenericError(xmlGenericErrorContext, + "System URN ID %s expanded to NULL\n", sysID); + else + xmlGenericError(xmlGenericErrorContext, + "System URN ID expanded to %s\n", urnID); + } + if (pubID == NULL) + ret = xmlCatalogListXMLResolve(catal, urnID, NULL); + else if (xmlStrEqual(pubID, urnID)) + ret = xmlCatalogListXMLResolve(catal, pubID, NULL); + else { + ret = xmlCatalogListXMLResolve(catal, pubID, urnID); + } + if (urnID != NULL) + xmlFree(urnID); + if (normid != NULL) + xmlFree(normid); + return(ret); + } + while (catal != NULL) { + if (catal->type == XML_CATA_CATALOG) { + if (catal->children == NULL) { + xmlFetchXMLCatalogFile(catal); + } + if (catal->children != NULL) { + ret = xmlCatalogXMLResolve(catal->children, pubID, sysID); + if (ret != NULL) { + break; + } else if ((catal->children != NULL) && + (catal->children->depth > MAX_CATAL_DEPTH)) { + ret = NULL; + break; + } + } + } + catal = catal->next; + } + if (normid != NULL) + xmlFree(normid); + return(ret); +} + +/** + * xmlCatalogListXMLResolveURI: + * @catal: a catalog list + * @URI: the URI + * + * Do a complete resolution lookup of an URI for a list of catalogs + * + * Implements (or tries to) 7.2. URI Resolution + * from http://www.oasis-open.org/committees/entity/spec-2001-08-06.html + * + * Returns the URI of the resource or NULL if not found + */ +static xmlChar * +xmlCatalogListXMLResolveURI(xmlCatalogEntryPtr catal, const xmlChar *URI) { + xmlChar *ret = NULL; + xmlChar *urnID = NULL; + + if (catal == NULL) + return(NULL); + if (URI == NULL) + return(NULL); + + if (!xmlStrncmp(URI, BAD_CAST XML_URN_PUBID, sizeof(XML_URN_PUBID) - 1)) { + urnID = xmlCatalogUnWrapURN(URI); + if (xmlDebugCatalogs) { + if (urnID == NULL) + xmlGenericError(xmlGenericErrorContext, + "URN ID %s expanded to NULL\n", URI); + else + xmlGenericError(xmlGenericErrorContext, + "URN ID expanded to %s\n", urnID); + } + ret = xmlCatalogListXMLResolve(catal, urnID, NULL); + if (urnID != NULL) + xmlFree(urnID); + return(ret); + } + while (catal != NULL) { + if (catal->type == XML_CATA_CATALOG) { + if (catal->children == NULL) { + xmlFetchXMLCatalogFile(catal); + } + if (catal->children != NULL) { + ret = xmlCatalogXMLResolveURI(catal->children, URI); + if (ret != NULL) + return(ret); + } + } + catal = catal->next; + } + return(ret); +} + +/************************************************************************ + * * + * The SGML Catalog parser * + * * + ************************************************************************/ + + +#define RAW *cur +#define NEXT cur++; +#define SKIP(x) cur += x; + +#define SKIP_BLANKS while (IS_BLANK_CH(*cur)) NEXT; + +/** + * xmlParseSGMLCatalogComment: + * @cur: the current character + * + * Skip a comment in an SGML catalog + * + * Returns new current character + */ +static const xmlChar * +xmlParseSGMLCatalogComment(const xmlChar *cur) { + if ((cur[0] != '-') || (cur[1] != '-')) + return(cur); + SKIP(2); + while ((cur[0] != 0) && ((cur[0] != '-') || ((cur[1] != '-')))) + NEXT; + if (cur[0] == 0) { + return(NULL); + } + return(cur + 2); +} + +/** + * xmlParseSGMLCatalogPubid: + * @cur: the current character + * @id: the return location + * + * Parse an SGML catalog ID + * + * Returns new current character and store the value in @id + */ +static const xmlChar * +xmlParseSGMLCatalogPubid(const xmlChar *cur, xmlChar **id) { + xmlChar *buf = NULL, *tmp; + int len = 0; + int size = 50; + xmlChar stop; + int count = 0; + + *id = NULL; + + if (RAW == '"') { + NEXT; + stop = '"'; + } else if (RAW == '\'') { + NEXT; + stop = '\''; + } else { + stop = ' '; + } + buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); + if (buf == NULL) { + xmlCatalogErrMemory("allocating public ID"); + return(NULL); + } + while (IS_PUBIDCHAR_CH(*cur) || (*cur == '?')) { + if ((*cur == stop) && (stop != ' ')) + break; + if ((stop == ' ') && (IS_BLANK_CH(*cur))) + break; + if (len + 1 >= size) { + size *= 2; + tmp = (xmlChar *) xmlRealloc(buf, size * sizeof(xmlChar)); + if (tmp == NULL) { + xmlCatalogErrMemory("allocating public ID"); + xmlFree(buf); + return(NULL); + } + buf = tmp; + } + buf[len++] = *cur; + count++; + NEXT; + } + buf[len] = 0; + if (stop == ' ') { + if (!IS_BLANK_CH(*cur)) { + xmlFree(buf); + return(NULL); + } + } else { + if (*cur != stop) { + xmlFree(buf); + return(NULL); + } + NEXT; + } + *id = buf; + return(cur); +} + +/** + * xmlParseSGMLCatalogName: + * @cur: the current character + * @name: the return location + * + * Parse an SGML catalog name + * + * Returns new current character and store the value in @name + */ +static const xmlChar * +xmlParseSGMLCatalogName(const xmlChar *cur, xmlChar **name) { + xmlChar buf[XML_MAX_NAMELEN + 5]; + int len = 0; + int c; + + *name = NULL; + + /* + * Handler for more complex cases + */ + c = *cur; + if ((!IS_LETTER(c) && (c != '_') && (c != ':'))) { + return(NULL); + } + + while (((IS_LETTER(c)) || (IS_DIGIT(c)) || + (c == '.') || (c == '-') || + (c == '_') || (c == ':'))) { + buf[len++] = c; + cur++; + c = *cur; + if (len >= XML_MAX_NAMELEN) + return(NULL); + } + *name = xmlStrndup(buf, len); + return(cur); +} + +/** + * xmlGetSGMLCatalogEntryType: + * @name: the entry name + * + * Get the Catalog entry type for a given SGML Catalog name + * + * Returns Catalog entry type + */ +static xmlCatalogEntryType +xmlGetSGMLCatalogEntryType(const xmlChar *name) { + xmlCatalogEntryType type = XML_CATA_NONE; + if (xmlStrEqual(name, (const xmlChar *) "SYSTEM")) + type = SGML_CATA_SYSTEM; + else if (xmlStrEqual(name, (const xmlChar *) "PUBLIC")) + type = SGML_CATA_PUBLIC; + else if (xmlStrEqual(name, (const xmlChar *) "DELEGATE")) + type = SGML_CATA_DELEGATE; + else if (xmlStrEqual(name, (const xmlChar *) "ENTITY")) + type = SGML_CATA_ENTITY; + else if (xmlStrEqual(name, (const xmlChar *) "DOCTYPE")) + type = SGML_CATA_DOCTYPE; + else if (xmlStrEqual(name, (const xmlChar *) "LINKTYPE")) + type = SGML_CATA_LINKTYPE; + else if (xmlStrEqual(name, (const xmlChar *) "NOTATION")) + type = SGML_CATA_NOTATION; + else if (xmlStrEqual(name, (const xmlChar *) "SGMLDECL")) + type = SGML_CATA_SGMLDECL; + else if (xmlStrEqual(name, (const xmlChar *) "DOCUMENT")) + type = SGML_CATA_DOCUMENT; + else if (xmlStrEqual(name, (const xmlChar *) "CATALOG")) + type = SGML_CATA_CATALOG; + else if (xmlStrEqual(name, (const xmlChar *) "BASE")) + type = SGML_CATA_BASE; + return(type); +} + +/** + * xmlParseSGMLCatalog: + * @catal: the SGML Catalog + * @value: the content of the SGML Catalog serialization + * @file: the filepath for the catalog + * @super: should this be handled as a Super Catalog in which case + * parsing is not recursive + * + * Parse an SGML catalog content and fill up the @catal hash table with + * the new entries found. + * + * Returns 0 in case of success, -1 in case of error. + */ +static int +xmlParseSGMLCatalog(xmlCatalogPtr catal, const xmlChar *value, + const char *file, int super) { + const xmlChar *cur = value; + xmlChar *base = NULL; + int res; + + if ((cur == NULL) || (file == NULL)) + return(-1); + base = xmlStrdup((const xmlChar *) file); + + while ((cur != NULL) && (cur[0] != 0)) { + SKIP_BLANKS; + if (cur[0] == 0) + break; + if ((cur[0] == '-') && (cur[1] == '-')) { + cur = xmlParseSGMLCatalogComment(cur); + if (cur == NULL) { + /* error */ + break; + } + } else { + xmlChar *sysid = NULL; + xmlChar *name = NULL; + xmlCatalogEntryType type = XML_CATA_NONE; + + cur = xmlParseSGMLCatalogName(cur, &name); + if (name == NULL) { + /* error */ + break; + } + if (!IS_BLANK_CH(*cur)) { + /* error */ + break; + } + SKIP_BLANKS; + if (xmlStrEqual(name, (const xmlChar *) "SYSTEM")) + type = SGML_CATA_SYSTEM; + else if (xmlStrEqual(name, (const xmlChar *) "PUBLIC")) + type = SGML_CATA_PUBLIC; + else if (xmlStrEqual(name, (const xmlChar *) "DELEGATE")) + type = SGML_CATA_DELEGATE; + else if (xmlStrEqual(name, (const xmlChar *) "ENTITY")) + type = SGML_CATA_ENTITY; + else if (xmlStrEqual(name, (const xmlChar *) "DOCTYPE")) + type = SGML_CATA_DOCTYPE; + else if (xmlStrEqual(name, (const xmlChar *) "LINKTYPE")) + type = SGML_CATA_LINKTYPE; + else if (xmlStrEqual(name, (const xmlChar *) "NOTATION")) + type = SGML_CATA_NOTATION; + else if (xmlStrEqual(name, (const xmlChar *) "SGMLDECL")) + type = SGML_CATA_SGMLDECL; + else if (xmlStrEqual(name, (const xmlChar *) "DOCUMENT")) + type = SGML_CATA_DOCUMENT; + else if (xmlStrEqual(name, (const xmlChar *) "CATALOG")) + type = SGML_CATA_CATALOG; + else if (xmlStrEqual(name, (const xmlChar *) "BASE")) + type = SGML_CATA_BASE; + else if (xmlStrEqual(name, (const xmlChar *) "OVERRIDE")) { + xmlFree(name); + cur = xmlParseSGMLCatalogName(cur, &name); + if (name == NULL) { + /* error */ + break; + } + xmlFree(name); + continue; + } + xmlFree(name); + name = NULL; + + switch(type) { + case SGML_CATA_ENTITY: + if (*cur == '%') + type = SGML_CATA_PENTITY; + case SGML_CATA_PENTITY: + case SGML_CATA_DOCTYPE: + case SGML_CATA_LINKTYPE: + case SGML_CATA_NOTATION: + cur = xmlParseSGMLCatalogName(cur, &name); + if (cur == NULL) { + /* error */ + break; + } + if (!IS_BLANK_CH(*cur)) { + /* error */ + break; + } + SKIP_BLANKS; + cur = xmlParseSGMLCatalogPubid(cur, &sysid); + if (cur == NULL) { + /* error */ + break; + } + break; + case SGML_CATA_PUBLIC: + case SGML_CATA_SYSTEM: + case SGML_CATA_DELEGATE: + cur = xmlParseSGMLCatalogPubid(cur, &name); + if (cur == NULL) { + /* error */ + break; + } + if (type != SGML_CATA_SYSTEM) { + xmlChar *normid; + + normid = xmlCatalogNormalizePublic(name); + if (normid != NULL) { + if (name != NULL) + xmlFree(name); + if (*normid != 0) + name = normid; + else { + xmlFree(normid); + name = NULL; + } + } + } + if (!IS_BLANK_CH(*cur)) { + /* error */ + break; + } + SKIP_BLANKS; + cur = xmlParseSGMLCatalogPubid(cur, &sysid); + if (cur == NULL) { + /* error */ + break; + } + break; + case SGML_CATA_BASE: + case SGML_CATA_CATALOG: + case SGML_CATA_DOCUMENT: + case SGML_CATA_SGMLDECL: + cur = xmlParseSGMLCatalogPubid(cur, &sysid); + if (cur == NULL) { + /* error */ + break; + } + break; + default: + break; + } + if (cur == NULL) { + if (name != NULL) + xmlFree(name); + if (sysid != NULL) + xmlFree(sysid); + break; + } else if (type == SGML_CATA_BASE) { + if (base != NULL) + xmlFree(base); + base = xmlStrdup(sysid); + } else if ((type == SGML_CATA_PUBLIC) || + (type == SGML_CATA_SYSTEM)) { + xmlChar *filename; + + filename = xmlBuildURI(sysid, base); + if (filename != NULL) { + xmlCatalogEntryPtr entry; + + entry = xmlNewCatalogEntry(type, name, filename, + NULL, XML_CATA_PREFER_NONE, NULL); + res = xmlHashAddEntry(catal->sgml, name, entry); + if (res < 0) { + xmlFreeCatalogEntry(entry); + } + xmlFree(filename); + } + + } else if (type == SGML_CATA_CATALOG) { + if (super) { + xmlCatalogEntryPtr entry; + + entry = xmlNewCatalogEntry(type, sysid, NULL, NULL, + XML_CATA_PREFER_NONE, NULL); + res = xmlHashAddEntry(catal->sgml, sysid, entry); + if (res < 0) { + xmlFreeCatalogEntry(entry); + } + } else { + xmlChar *filename; + + filename = xmlBuildURI(sysid, base); + if (filename != NULL) { + xmlExpandCatalog(catal, (const char *)filename); + xmlFree(filename); + } + } + } + /* + * drop anything else we won't handle it + */ + if (name != NULL) + xmlFree(name); + if (sysid != NULL) + xmlFree(sysid); + } + } + if (base != NULL) + xmlFree(base); + if (cur == NULL) + return(-1); + return(0); +} + +/************************************************************************ + * * + * SGML Catalog handling * + * * + ************************************************************************/ + +/** + * xmlCatalogGetSGMLPublic: + * @catal: an SGML catalog hash + * @pubID: the public ID string + * + * Try to lookup the catalog local reference associated to a public ID + * + * Returns the local resource if found or NULL otherwise. + */ +static const xmlChar * +xmlCatalogGetSGMLPublic(xmlHashTablePtr catal, const xmlChar *pubID) { + xmlCatalogEntryPtr entry; + xmlChar *normid; + + if (catal == NULL) + return(NULL); + + normid = xmlCatalogNormalizePublic(pubID); + if (normid != NULL) + pubID = (*normid != 0 ? normid : NULL); + + entry = (xmlCatalogEntryPtr) xmlHashLookup(catal, pubID); + if (entry == NULL) { + if (normid != NULL) + xmlFree(normid); + return(NULL); + } + if (entry->type == SGML_CATA_PUBLIC) { + if (normid != NULL) + xmlFree(normid); + return(entry->URL); + } + if (normid != NULL) + xmlFree(normid); + return(NULL); +} + +/** + * xmlCatalogGetSGMLSystem: + * @catal: an SGML catalog hash + * @sysID: the system ID string + * + * Try to lookup the catalog local reference for a system ID + * + * Returns the local resource if found or NULL otherwise. + */ +static const xmlChar * +xmlCatalogGetSGMLSystem(xmlHashTablePtr catal, const xmlChar *sysID) { + xmlCatalogEntryPtr entry; + + if (catal == NULL) + return(NULL); + + entry = (xmlCatalogEntryPtr) xmlHashLookup(catal, sysID); + if (entry == NULL) + return(NULL); + if (entry->type == SGML_CATA_SYSTEM) + return(entry->URL); + return(NULL); +} + +/** + * xmlCatalogSGMLResolve: + * @catal: the SGML catalog + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier + * + * Returns the URI of the resource or NULL if not found + */ +static const xmlChar * +xmlCatalogSGMLResolve(xmlCatalogPtr catal, const xmlChar *pubID, + const xmlChar *sysID) { + const xmlChar *ret = NULL; + + if (catal->sgml == NULL) + return(NULL); + + if (pubID != NULL) + ret = xmlCatalogGetSGMLPublic(catal->sgml, pubID); + if (ret != NULL) + return(ret); + if (sysID != NULL) + ret = xmlCatalogGetSGMLSystem(catal->sgml, sysID); + if (ret != NULL) + return(ret); + return(NULL); +} + +/************************************************************************ + * * + * Specific Public interfaces * + * * + ************************************************************************/ + +/** + * xmlLoadSGMLSuperCatalog: + * @filename: a file path + * + * Load an SGML super catalog. It won't expand CATALOG or DELEGATE + * references. This is only needed for manipulating SGML Super Catalogs + * like adding and removing CATALOG or DELEGATE entries. + * + * Returns the catalog parsed or NULL in case of error + */ +xmlCatalogPtr +xmlLoadSGMLSuperCatalog(const char *filename) +{ + xmlChar *content; + xmlCatalogPtr catal; + int ret; + + content = xmlLoadFileContent(filename); + if (content == NULL) + return(NULL); + + catal = xmlCreateNewCatalog(XML_SGML_CATALOG_TYPE, xmlCatalogDefaultPrefer); + if (catal == NULL) { + xmlFree(content); + return(NULL); + } + + ret = xmlParseSGMLCatalog(catal, content, filename, 1); + xmlFree(content); + if (ret < 0) { + xmlFreeCatalog(catal); + return(NULL); + } + return (catal); +} + +/** + * xmlLoadACatalog: + * @filename: a file path + * + * Load the catalog and build the associated data structures. + * This can be either an XML Catalog or an SGML Catalog + * It will recurse in SGML CATALOG entries. On the other hand XML + * Catalogs are not handled recursively. + * + * Returns the catalog parsed or NULL in case of error + */ +xmlCatalogPtr +xmlLoadACatalog(const char *filename) +{ + xmlChar *content; + xmlChar *first; + xmlCatalogPtr catal; + int ret; + + content = xmlLoadFileContent(filename); + if (content == NULL) + return(NULL); + + + first = content; + + while ((*first != 0) && (*first != '-') && (*first != '<') && + (!(((*first >= 'A') && (*first <= 'Z')) || + ((*first >= 'a') && (*first <= 'z'))))) + first++; + + if (*first != '<') { + catal = xmlCreateNewCatalog(XML_SGML_CATALOG_TYPE, xmlCatalogDefaultPrefer); + if (catal == NULL) { + xmlFree(content); + return(NULL); + } + ret = xmlParseSGMLCatalog(catal, content, filename, 0); + if (ret < 0) { + xmlFreeCatalog(catal); + xmlFree(content); + return(NULL); + } + } else { + catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, xmlCatalogDefaultPrefer); + if (catal == NULL) { + xmlFree(content); + return(NULL); + } + catal->xml = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, + NULL, BAD_CAST filename, xmlCatalogDefaultPrefer, NULL); + } + xmlFree(content); + return (catal); +} + +/** + * xmlExpandCatalog: + * @catal: a catalog + * @filename: a file path + * + * Load the catalog and expand the existing catal structure. + * This can be either an XML Catalog or an SGML Catalog + * + * Returns 0 in case of success, -1 in case of error + */ +static int +xmlExpandCatalog(xmlCatalogPtr catal, const char *filename) +{ + int ret; + + if ((catal == NULL) || (filename == NULL)) + return(-1); + + + if (catal->type == XML_SGML_CATALOG_TYPE) { + xmlChar *content; + + content = xmlLoadFileContent(filename); + if (content == NULL) + return(-1); + + ret = xmlParseSGMLCatalog(catal, content, filename, 0); + if (ret < 0) { + xmlFree(content); + return(-1); + } + xmlFree(content); + } else { + xmlCatalogEntryPtr tmp, cur; + tmp = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, + NULL, BAD_CAST filename, xmlCatalogDefaultPrefer, NULL); + + cur = catal->xml; + if (cur == NULL) { + catal->xml = tmp; + } else { + while (cur->next != NULL) cur = cur->next; + cur->next = tmp; + } + } + return (0); +} + +/** + * xmlACatalogResolveSystem: + * @catal: a Catalog + * @sysID: the system ID string + * + * Try to lookup the catalog resource for a system ID + * + * Returns the resource if found or NULL otherwise, the value returned + * must be freed by the caller. + */ +xmlChar * +xmlACatalogResolveSystem(xmlCatalogPtr catal, const xmlChar *sysID) { + xmlChar *ret = NULL; + + if ((sysID == NULL) || (catal == NULL)) + return(NULL); + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Resolve sysID %s\n", sysID); + + if (catal->type == XML_XML_CATALOG_TYPE) { + ret = xmlCatalogListXMLResolve(catal->xml, NULL, sysID); + if (ret == XML_CATAL_BREAK) + ret = NULL; + } else { + const xmlChar *sgml; + + sgml = xmlCatalogGetSGMLSystem(catal->sgml, sysID); + if (sgml != NULL) + ret = xmlStrdup(sgml); + } + return(ret); +} + +/** + * xmlACatalogResolvePublic: + * @catal: a Catalog + * @pubID: the public ID string + * + * Try to lookup the catalog local reference associated to a public ID in that catalog + * + * Returns the local resource if found or NULL otherwise, the value returned + * must be freed by the caller. + */ +xmlChar * +xmlACatalogResolvePublic(xmlCatalogPtr catal, const xmlChar *pubID) { + xmlChar *ret = NULL; + + if ((pubID == NULL) || (catal == NULL)) + return(NULL); + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Resolve pubID %s\n", pubID); + + if (catal->type == XML_XML_CATALOG_TYPE) { + ret = xmlCatalogListXMLResolve(catal->xml, pubID, NULL); + if (ret == XML_CATAL_BREAK) + ret = NULL; + } else { + const xmlChar *sgml; + + sgml = xmlCatalogGetSGMLPublic(catal->sgml, pubID); + if (sgml != NULL) + ret = xmlStrdup(sgml); + } + return(ret); +} + +/** + * xmlACatalogResolve: + * @catal: a Catalog + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlACatalogResolve(xmlCatalogPtr catal, const xmlChar * pubID, + const xmlChar * sysID) +{ + xmlChar *ret = NULL; + + if (((pubID == NULL) && (sysID == NULL)) || (catal == NULL)) + return (NULL); + + if (xmlDebugCatalogs) { + if ((pubID != NULL) && (sysID != NULL)) { + xmlGenericError(xmlGenericErrorContext, + "Resolve: pubID %s sysID %s\n", pubID, sysID); + } else if (pubID != NULL) { + xmlGenericError(xmlGenericErrorContext, + "Resolve: pubID %s\n", pubID); + } else { + xmlGenericError(xmlGenericErrorContext, + "Resolve: sysID %s\n", sysID); + } + } + + if (catal->type == XML_XML_CATALOG_TYPE) { + ret = xmlCatalogListXMLResolve(catal->xml, pubID, sysID); + if (ret == XML_CATAL_BREAK) + ret = NULL; + } else { + const xmlChar *sgml; + + sgml = xmlCatalogSGMLResolve(catal, pubID, sysID); + if (sgml != NULL) + ret = xmlStrdup(sgml); + } + return (ret); +} + +/** + * xmlACatalogResolveURI: + * @catal: a Catalog + * @URI: the URI + * + * Do a complete resolution lookup of an URI + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlACatalogResolveURI(xmlCatalogPtr catal, const xmlChar *URI) { + xmlChar *ret = NULL; + + if ((URI == NULL) || (catal == NULL)) + return(NULL); + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Resolve URI %s\n", URI); + + if (catal->type == XML_XML_CATALOG_TYPE) { + ret = xmlCatalogListXMLResolveURI(catal->xml, URI); + if (ret == XML_CATAL_BREAK) + ret = NULL; + } else { + const xmlChar *sgml; + + sgml = xmlCatalogSGMLResolve(catal, NULL, URI); + if (sgml != NULL) + ret = xmlStrdup(sgml); + } + return(ret); +} + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlACatalogDump: + * @catal: a Catalog + * @out: the file. + * + * Dump the given catalog to the given file. + */ +void +xmlACatalogDump(xmlCatalogPtr catal, FILE *out) { + if ((out == NULL) || (catal == NULL)) + return; + + if (catal->type == XML_XML_CATALOG_TYPE) { + xmlDumpXMLCatalog(out, catal->xml); + } else { + xmlHashScan(catal->sgml, + (xmlHashScanner) xmlCatalogDumpEntry, out); + } +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +/** + * xmlACatalogAdd: + * @catal: a Catalog + * @type: the type of record to add to the catalog + * @orig: the system, public or prefix to match + * @replace: the replacement value for the match + * + * Add an entry in the catalog, it may overwrite existing but + * different entries. + * + * Returns 0 if successful, -1 otherwise + */ +int +xmlACatalogAdd(xmlCatalogPtr catal, const xmlChar * type, + const xmlChar * orig, const xmlChar * replace) +{ + int res = -1; + + if (catal == NULL) + return(-1); + + if (catal->type == XML_XML_CATALOG_TYPE) { + res = xmlAddXMLCatalog(catal->xml, type, orig, replace); + } else { + xmlCatalogEntryType cattype; + + cattype = xmlGetSGMLCatalogEntryType(type); + if (cattype != XML_CATA_NONE) { + xmlCatalogEntryPtr entry; + + entry = xmlNewCatalogEntry(cattype, orig, replace, NULL, + XML_CATA_PREFER_NONE, NULL); + if (catal->sgml == NULL) + catal->sgml = xmlHashCreate(10); + res = xmlHashAddEntry(catal->sgml, orig, entry); + } + } + return (res); +} + +/** + * xmlACatalogRemove: + * @catal: a Catalog + * @value: the value to remove + * + * Remove an entry from the catalog + * + * Returns the number of entries removed if successful, -1 otherwise + */ +int +xmlACatalogRemove(xmlCatalogPtr catal, const xmlChar *value) { + int res = -1; + + if ((catal == NULL) || (value == NULL)) + return(-1); + + if (catal->type == XML_XML_CATALOG_TYPE) { + res = xmlDelXMLCatalog(catal->xml, value); + } else { + res = xmlHashRemoveEntry(catal->sgml, value, + (xmlHashDeallocator) xmlFreeCatalogEntry); + if (res == 0) + res = 1; + } + return(res); +} + +/** + * xmlNewCatalog: + * @sgml: should this create an SGML catalog + * + * create a new Catalog. + * + * Returns the xmlCatalogPtr or NULL in case of error + */ +xmlCatalogPtr +xmlNewCatalog(int sgml) { + xmlCatalogPtr catal = NULL; + + if (sgml) { + catal = xmlCreateNewCatalog(XML_SGML_CATALOG_TYPE, + xmlCatalogDefaultPrefer); + if ((catal != NULL) && (catal->sgml == NULL)) + catal->sgml = xmlHashCreate(10); + } else + catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, + xmlCatalogDefaultPrefer); + return(catal); +} + +/** + * xmlCatalogIsEmpty: + * @catal: should this create an SGML catalog + * + * Check is a catalog is empty + * + * Returns 1 if the catalog is empty, 0 if not, amd -1 in case of error. + */ +int +xmlCatalogIsEmpty(xmlCatalogPtr catal) { + if (catal == NULL) + return(-1); + + if (catal->type == XML_XML_CATALOG_TYPE) { + if (catal->xml == NULL) + return(1); + if ((catal->xml->type != XML_CATA_CATALOG) && + (catal->xml->type != XML_CATA_BROKEN_CATALOG)) + return(-1); + if (catal->xml->children == NULL) + return(1); + return(0); + } else { + int res; + + if (catal->sgml == NULL) + return(1); + res = xmlHashSize(catal->sgml); + if (res == 0) + return(1); + if (res < 0) + return(-1); + } + return(0); +} + +/************************************************************************ + * * + * Public interfaces manipulating the global shared default catalog * + * * + ************************************************************************/ + +/** + * xmlInitializeCatalogData: + * + * Do the catalog initialization only of global data, doesn't try to load + * any catalog actually. + * this function is not thread safe, catalog initialization should + * preferably be done once at startup + */ +static void +xmlInitializeCatalogData(void) { + if (xmlCatalogInitialized != 0) + return; + + if (getenv("XML_DEBUG_CATALOG")) + xmlDebugCatalogs = 1; + xmlCatalogMutex = xmlNewRMutex(); + + xmlCatalogInitialized = 1; +} +/** + * xmlInitializeCatalog: + * + * Do the catalog initialization. + * this function is not thread safe, catalog initialization should + * preferably be done once at startup + */ +void +xmlInitializeCatalog(void) { + if (xmlCatalogInitialized != 0) + return; + + xmlInitializeCatalogData(); + xmlRMutexLock(xmlCatalogMutex); + + if (getenv("XML_DEBUG_CATALOG")) + xmlDebugCatalogs = 1; + + if (xmlDefaultCatalog == NULL) { + const char *catalogs; + char *path; + const char *cur, *paths; + xmlCatalogPtr catal; + xmlCatalogEntryPtr *nextent; + + catalogs = (const char *) getenv("XML_CATALOG_FILES"); + if (catalogs == NULL) +#if defined(_WIN32) && defined(_MSC_VER) + { + void* hmodule; + hmodule = GetModuleHandleA("libxml2.dll"); + if (hmodule == NULL) + hmodule = GetModuleHandleA(NULL); + if (hmodule != NULL) { + char buf[256]; + unsigned long len = GetModuleFileNameA(hmodule, buf, 255); + if (len != 0) { + char* p = &(buf[len]); + while (*p != '\\' && p > buf) + p--; + if (p != buf) { + xmlChar* uri; + strncpy(p, "\\..\\etc\\catalog", 255 - (p - buf)); + uri = xmlCanonicPath(buf); + if (uri != NULL) { + strncpy(XML_XML_DEFAULT_CATALOG, uri, 255); + xmlFree(uri); + } + } + } + } + catalogs = XML_XML_DEFAULT_CATALOG; + } +#else + catalogs = XML_XML_DEFAULT_CATALOG; +#endif + + catal = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, + xmlCatalogDefaultPrefer); + if (catal != NULL) { + /* the XML_CATALOG_FILES envvar is allowed to contain a + space-separated list of entries. */ + cur = catalogs; + nextent = &catal->xml; + while (*cur != '\0') { + while (xmlIsBlank_ch(*cur)) + cur++; + if (*cur != 0) { + paths = cur; + while ((*cur != 0) && (!xmlIsBlank_ch(*cur))) + cur++; + path = (char *) xmlStrndup((const xmlChar *)paths, cur - paths); + if (path != NULL) { + *nextent = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, + NULL, BAD_CAST path, xmlCatalogDefaultPrefer, NULL); + if (*nextent != NULL) + nextent = &((*nextent)->next); + xmlFree(path); + } + } + } + xmlDefaultCatalog = catal; + } + } + + xmlRMutexUnlock(xmlCatalogMutex); +} + + +/** + * xmlLoadCatalog: + * @filename: a file path + * + * Load the catalog and makes its definitions effective for the default + * external entity loader. It will recurse in SGML CATALOG entries. + * this function is not thread safe, catalog initialization should + * preferably be done once at startup + * + * Returns 0 in case of success -1 in case of error + */ +int +xmlLoadCatalog(const char *filename) +{ + int ret; + xmlCatalogPtr catal; + + if (!xmlCatalogInitialized) + xmlInitializeCatalogData(); + + xmlRMutexLock(xmlCatalogMutex); + + if (xmlDefaultCatalog == NULL) { + catal = xmlLoadACatalog(filename); + if (catal == NULL) { + xmlRMutexUnlock(xmlCatalogMutex); + return(-1); + } + + xmlDefaultCatalog = catal; + xmlRMutexUnlock(xmlCatalogMutex); + return(0); + } + + ret = xmlExpandCatalog(xmlDefaultCatalog, filename); + xmlRMutexUnlock(xmlCatalogMutex); + return(ret); +} + +/** + * xmlLoadCatalogs: + * @pathss: a list of directories separated by a colon or a space. + * + * Load the catalogs and makes their definitions effective for the default + * external entity loader. + * this function is not thread safe, catalog initialization should + * preferably be done once at startup + */ +void +xmlLoadCatalogs(const char *pathss) { + const char *cur; + const char *paths; + xmlChar *path; +#ifdef _WIN32 + int i, iLen; +#endif + + if (pathss == NULL) + return; + + cur = pathss; + while (*cur != 0) { + while (xmlIsBlank_ch(*cur)) cur++; + if (*cur != 0) { + paths = cur; + while ((*cur != 0) && (*cur != PATH_SEAPARATOR) && (!xmlIsBlank_ch(*cur))) + cur++; + path = xmlStrndup((const xmlChar *)paths, cur - paths); +#ifdef _WIN32 + iLen = strlen(path); + for(i = 0; i < iLen; i++) { + if(path[i] == '\\') { + path[i] = '/'; + } + } +#endif + if (path != NULL) { + xmlLoadCatalog((const char *) path); + xmlFree(path); + } + } + while (*cur == PATH_SEAPARATOR) + cur++; + } +} + +/** + * xmlCatalogCleanup: + * + * Free up all the memory associated with catalogs + */ +void +xmlCatalogCleanup(void) { + if (xmlCatalogInitialized == 0) + return; + + xmlRMutexLock(xmlCatalogMutex); + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Catalogs cleanup\n"); + if (xmlCatalogXMLFiles != NULL) + xmlHashFree(xmlCatalogXMLFiles, + (xmlHashDeallocator)xmlFreeCatalogHashEntryList); + xmlCatalogXMLFiles = NULL; + if (xmlDefaultCatalog != NULL) + xmlFreeCatalog(xmlDefaultCatalog); + xmlDefaultCatalog = NULL; + xmlDebugCatalogs = 0; + xmlCatalogInitialized = 0; + xmlRMutexUnlock(xmlCatalogMutex); + xmlFreeRMutex(xmlCatalogMutex); +} + +/** + * xmlCatalogResolveSystem: + * @sysID: the system ID string + * + * Try to lookup the catalog resource for a system ID + * + * Returns the resource if found or NULL otherwise, the value returned + * must be freed by the caller. + */ +xmlChar * +xmlCatalogResolveSystem(const xmlChar *sysID) { + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + ret = xmlACatalogResolveSystem(xmlDefaultCatalog, sysID); + return(ret); +} + +/** + * xmlCatalogResolvePublic: + * @pubID: the public ID string + * + * Try to lookup the catalog reference associated to a public ID + * + * Returns the resource if found or NULL otherwise, the value returned + * must be freed by the caller. + */ +xmlChar * +xmlCatalogResolvePublic(const xmlChar *pubID) { + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + ret = xmlACatalogResolvePublic(xmlDefaultCatalog, pubID); + return(ret); +} + +/** + * xmlCatalogResolve: + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlCatalogResolve(const xmlChar *pubID, const xmlChar *sysID) { + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + ret = xmlACatalogResolve(xmlDefaultCatalog, pubID, sysID); + return(ret); +} + +/** + * xmlCatalogResolveURI: + * @URI: the URI + * + * Do a complete resolution lookup of an URI + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlCatalogResolveURI(const xmlChar *URI) { + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + ret = xmlACatalogResolveURI(xmlDefaultCatalog, URI); + return(ret); +} + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlCatalogDump: + * @out: the file. + * + * Dump all the global catalog content to the given file. + */ +void +xmlCatalogDump(FILE *out) { + if (out == NULL) + return; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + xmlACatalogDump(xmlDefaultCatalog, out); +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +/** + * xmlCatalogAdd: + * @type: the type of record to add to the catalog + * @orig: the system, public or prefix to match + * @replace: the replacement value for the match + * + * Add an entry in the catalog, it may overwrite existing but + * different entries. + * If called before any other catalog routine, allows to override the + * default shared catalog put in place by xmlInitializeCatalog(); + * + * Returns 0 if successful, -1 otherwise + */ +int +xmlCatalogAdd(const xmlChar *type, const xmlChar *orig, const xmlChar *replace) { + int res = -1; + + if (!xmlCatalogInitialized) + xmlInitializeCatalogData(); + + xmlRMutexLock(xmlCatalogMutex); + /* + * Specific case where one want to override the default catalog + * put in place by xmlInitializeCatalog(); + */ + if ((xmlDefaultCatalog == NULL) && + (xmlStrEqual(type, BAD_CAST "catalog"))) { + xmlDefaultCatalog = xmlCreateNewCatalog(XML_XML_CATALOG_TYPE, + xmlCatalogDefaultPrefer); + xmlDefaultCatalog->xml = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, + orig, NULL, xmlCatalogDefaultPrefer, NULL); + + xmlRMutexUnlock(xmlCatalogMutex); + return(0); + } + + res = xmlACatalogAdd(xmlDefaultCatalog, type, orig, replace); + xmlRMutexUnlock(xmlCatalogMutex); + return(res); +} + +/** + * xmlCatalogRemove: + * @value: the value to remove + * + * Remove an entry from the catalog + * + * Returns the number of entries removed if successful, -1 otherwise + */ +int +xmlCatalogRemove(const xmlChar *value) { + int res; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + xmlRMutexLock(xmlCatalogMutex); + res = xmlACatalogRemove(xmlDefaultCatalog, value); + xmlRMutexUnlock(xmlCatalogMutex); + return(res); +} + +/** + * xmlCatalogConvert: + * + * Convert all the SGML catalog entries as XML ones + * + * Returns the number of entries converted if successful, -1 otherwise + */ +int +xmlCatalogConvert(void) { + int res = -1; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + xmlRMutexLock(xmlCatalogMutex); + res = xmlConvertSGMLCatalog(xmlDefaultCatalog); + xmlRMutexUnlock(xmlCatalogMutex); + return(res); +} + +/************************************************************************ + * * + * Public interface manipulating the common preferences * + * * + ************************************************************************/ + +/** + * xmlCatalogGetDefaults: + * + * Used to get the user preference w.r.t. to what catalogs should + * be accepted + * + * Returns the current xmlCatalogAllow value + */ +xmlCatalogAllow +xmlCatalogGetDefaults(void) { + return(xmlCatalogDefaultAllow); +} + +/** + * xmlCatalogSetDefaults: + * @allow: what catalogs should be accepted + * + * Used to set the user preference w.r.t. to what catalogs should + * be accepted + */ +void +xmlCatalogSetDefaults(xmlCatalogAllow allow) { + if (xmlDebugCatalogs) { + switch (allow) { + case XML_CATA_ALLOW_NONE: + xmlGenericError(xmlGenericErrorContext, + "Disabling catalog usage\n"); + break; + case XML_CATA_ALLOW_GLOBAL: + xmlGenericError(xmlGenericErrorContext, + "Allowing only global catalogs\n"); + break; + case XML_CATA_ALLOW_DOCUMENT: + xmlGenericError(xmlGenericErrorContext, + "Allowing only catalogs from the document\n"); + break; + case XML_CATA_ALLOW_ALL: + xmlGenericError(xmlGenericErrorContext, + "Allowing all catalogs\n"); + break; + } + } + xmlCatalogDefaultAllow = allow; +} + +/** + * xmlCatalogSetDefaultPrefer: + * @prefer: the default preference for delegation + * + * Allows to set the preference between public and system for deletion + * in XML Catalog resolution. C.f. section 4.1.1 of the spec + * Values accepted are XML_CATA_PREFER_PUBLIC or XML_CATA_PREFER_SYSTEM + * + * Returns the previous value of the default preference for delegation + */ +xmlCatalogPrefer +xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer) { + xmlCatalogPrefer ret = xmlCatalogDefaultPrefer; + + if (prefer == XML_CATA_PREFER_NONE) + return(ret); + + if (xmlDebugCatalogs) { + switch (prefer) { + case XML_CATA_PREFER_PUBLIC: + xmlGenericError(xmlGenericErrorContext, + "Setting catalog preference to PUBLIC\n"); + break; + case XML_CATA_PREFER_SYSTEM: + xmlGenericError(xmlGenericErrorContext, + "Setting catalog preference to SYSTEM\n"); + break; + case XML_CATA_PREFER_NONE: + break; + } + } + xmlCatalogDefaultPrefer = prefer; + return(ret); +} + +/** + * xmlCatalogSetDebug: + * @level: the debug level of catalogs required + * + * Used to set the debug level for catalog operation, 0 disable + * debugging, 1 enable it + * + * Returns the previous value of the catalog debugging level + */ +int +xmlCatalogSetDebug(int level) { + int ret = xmlDebugCatalogs; + + if (level <= 0) + xmlDebugCatalogs = 0; + else + xmlDebugCatalogs = level; + return(ret); +} + +/************************************************************************ + * * + * Minimal interfaces used for per-document catalogs by the parser * + * * + ************************************************************************/ + +/** + * xmlCatalogFreeLocal: + * @catalogs: a document's list of catalogs + * + * Free up the memory associated to the catalog list + */ +void +xmlCatalogFreeLocal(void *catalogs) { + xmlCatalogEntryPtr catal; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + catal = (xmlCatalogEntryPtr) catalogs; + if (catal != NULL) + xmlFreeCatalogEntryList(catal); +} + + +/** + * xmlCatalogAddLocal: + * @catalogs: a document's list of catalogs + * @URL: the URL to a new local catalog + * + * Add the new entry to the catalog list + * + * Returns the updated list + */ +void * +xmlCatalogAddLocal(void *catalogs, const xmlChar *URL) { + xmlCatalogEntryPtr catal, add; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + if (URL == NULL) + return(catalogs); + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Adding document catalog %s\n", URL); + + add = xmlNewCatalogEntry(XML_CATA_CATALOG, NULL, URL, NULL, + xmlCatalogDefaultPrefer, NULL); + if (add == NULL) + return(catalogs); + + catal = (xmlCatalogEntryPtr) catalogs; + if (catal == NULL) + return((void *) add); + + while (catal->next != NULL) + catal = catal->next; + catal->next = add; + return(catalogs); +} + +/** + * xmlCatalogLocalResolve: + * @catalogs: a document's list of catalogs + * @pubID: the public ID string + * @sysID: the system ID string + * + * Do a complete resolution lookup of an External Identifier using a + * document's private catalog list + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlCatalogLocalResolve(void *catalogs, const xmlChar *pubID, + const xmlChar *sysID) { + xmlCatalogEntryPtr catal; + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + if ((pubID == NULL) && (sysID == NULL)) + return(NULL); + + if (xmlDebugCatalogs) { + if ((pubID != NULL) && (sysID != NULL)) { + xmlGenericError(xmlGenericErrorContext, + "Local Resolve: pubID %s sysID %s\n", pubID, sysID); + } else if (pubID != NULL) { + xmlGenericError(xmlGenericErrorContext, + "Local Resolve: pubID %s\n", pubID); + } else { + xmlGenericError(xmlGenericErrorContext, + "Local Resolve: sysID %s\n", sysID); + } + } + + catal = (xmlCatalogEntryPtr) catalogs; + if (catal == NULL) + return(NULL); + ret = xmlCatalogListXMLResolve(catal, pubID, sysID); + if ((ret != NULL) && (ret != XML_CATAL_BREAK)) + return(ret); + return(NULL); +} + +/** + * xmlCatalogLocalResolveURI: + * @catalogs: a document's list of catalogs + * @URI: the URI + * + * Do a complete resolution lookup of an URI using a + * document's private catalog list + * + * Returns the URI of the resource or NULL if not found, it must be freed + * by the caller. + */ +xmlChar * +xmlCatalogLocalResolveURI(void *catalogs, const xmlChar *URI) { + xmlCatalogEntryPtr catal; + xmlChar *ret; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + if (URI == NULL) + return(NULL); + + if (xmlDebugCatalogs) + xmlGenericError(xmlGenericErrorContext, + "Resolve URI %s\n", URI); + + catal = (xmlCatalogEntryPtr) catalogs; + if (catal == NULL) + return(NULL); + ret = xmlCatalogListXMLResolveURI(catal, URI); + if ((ret != NULL) && (ret != XML_CATAL_BREAK)) + return(ret); + return(NULL); +} + +/************************************************************************ + * * + * Deprecated interfaces * + * * + ************************************************************************/ +/** + * xmlCatalogGetSystem: + * @sysID: the system ID string + * + * Try to lookup the catalog reference associated to a system ID + * DEPRECATED, use xmlCatalogResolveSystem() + * + * Returns the resource if found or NULL otherwise. + */ +const xmlChar * +xmlCatalogGetSystem(const xmlChar *sysID) { + xmlChar *ret; + static xmlChar result[1000]; + static int msg = 0; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + if (msg == 0) { + xmlGenericError(xmlGenericErrorContext, + "Use of deprecated xmlCatalogGetSystem() call\n"); + msg++; + } + + if (sysID == NULL) + return(NULL); + + /* + * Check first the XML catalogs + */ + if (xmlDefaultCatalog != NULL) { + ret = xmlCatalogListXMLResolve(xmlDefaultCatalog->xml, NULL, sysID); + if ((ret != NULL) && (ret != XML_CATAL_BREAK)) { + snprintf((char *) result, sizeof(result) - 1, "%s", (char *) ret); + result[sizeof(result) - 1] = 0; + return(result); + } + } + + if (xmlDefaultCatalog != NULL) + return(xmlCatalogGetSGMLSystem(xmlDefaultCatalog->sgml, sysID)); + return(NULL); +} + +/** + * xmlCatalogGetPublic: + * @pubID: the public ID string + * + * Try to lookup the catalog reference associated to a public ID + * DEPRECATED, use xmlCatalogResolvePublic() + * + * Returns the resource if found or NULL otherwise. + */ +const xmlChar * +xmlCatalogGetPublic(const xmlChar *pubID) { + xmlChar *ret; + static xmlChar result[1000]; + static int msg = 0; + + if (!xmlCatalogInitialized) + xmlInitializeCatalog(); + + if (msg == 0) { + xmlGenericError(xmlGenericErrorContext, + "Use of deprecated xmlCatalogGetPublic() call\n"); + msg++; + } + + if (pubID == NULL) + return(NULL); + + /* + * Check first the XML catalogs + */ + if (xmlDefaultCatalog != NULL) { + ret = xmlCatalogListXMLResolve(xmlDefaultCatalog->xml, pubID, NULL); + if ((ret != NULL) && (ret != XML_CATAL_BREAK)) { + snprintf((char *) result, sizeof(result) - 1, "%s", (char *) ret); + result[sizeof(result) - 1] = 0; + return(result); + } + } + + if (xmlDefaultCatalog != NULL) + return(xmlCatalogGetSGMLPublic(xmlDefaultCatalog->sgml, pubID)); + return(NULL); +} + +#define bottom_catalog +#include "elfgcchack.h" +#endif /* LIBXML_CATALOG_ENABLED */
diff --git a/libxml2-2.7.7/check-relaxng-test-suite.py b/libxml2-2.7.7/check-relaxng-test-suite.py new file mode 100755 index 0000000..f4a5a69 --- /dev/null +++ b/libxml2-2.7.7/check-relaxng-test-suite.py
@@ -0,0 +1,394 @@ +#!/usr/bin/python +import sys +import time +import os +import string +import StringIO +sys.path.insert(0, "python") +import libxml2 + +# Memory debug specific +libxml2.debugMemory(1) +debug = 0 +verbose = 0 +quiet = 1 + +# +# the testsuite description +# +CONF=os.path.join(os.path.dirname(__file__), "test/relaxng/OASIS/spectest.xml") +LOG="check-relaxng-test-suite.log" +RES="relaxng-test-results.xml" + +log = open(LOG, "w") +nb_schemas_tests = 0 +nb_schemas_success = 0 +nb_schemas_failed = 0 +nb_instances_tests = 0 +nb_instances_success = 0 +nb_instances_failed = 0 + +libxml2.lineNumbersDefault(1) +# +# Error and warnng callbacks +# +def callback(ctx, str): + global log + log.write("%s%s" % (ctx, str)) + +libxml2.registerErrorHandler(callback, "") + +# +# Resolver callback +# +resources = {} +def resolver(URL, ID, ctxt): + global resources + + if string.find(URL, '#') != -1: + URL = URL[0:string.find(URL, '#')] + if resources.has_key(URL): + return(StringIO.StringIO(resources[URL])) + log.write("Resolver failure: asked %s\n" % (URL)) + log.write("resources: %s\n" % (resources)) + return None + +# +# Load the previous results +# +#results = {} +#previous = {} +# +#try: +# res = libxml2.parseFile(RES) +#except: +# log.write("Could not parse %s" % (RES)) + +# +# handle a valid instance +# +def handle_valid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nFailed to parse correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + return + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + except: + ret = -1 + if ret != 0: + log.write("\nFailed to validate correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + doc.freeDoc() + +# +# handle an invalid instance +# +def handle_invalid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nStrange: failed to parse incorrect instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + return + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + except: + ret = -1 + if ret == 0: + log.write("\nFailed to detect validation problem in instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + doc.freeDoc() + +# +# handle an incorrect test +# +def handle_correct(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs == None: + log.write("\nFailed to compile correct schema:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: + nb_schemas_success = nb_schemas_success + 1 + return rngs + +def handle_incorrect(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs != None: + log.write("\nFailed to detect schema error in:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: +# log.write("\nSuccess detecting schema error in:\n-----\n") +# log.write(schema) +# log.write("\n-----\n") + nb_schemas_success = nb_schemas_success + 1 + return None + +# +# resource handling: keep a dictionary of URL->string mappings +# +def handle_resource(node, dir): + global resources + + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + res = "" + child = node.children + while child != None: + if child.type != 'text': + res = res + child.serialize() + child = child.next + resources[name] = res + +# +# dir handling: pseudo directory resources +# +def handle_dir(node, dir): + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, name) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, name) + +# +# handle a testCase element +# +def handle_testCase(node): + global nb_schemas_tests + global nb_instances_tests + global resources + + sections = node.xpathEval('string(section)') + log.write("\n ======== test %d line %d section %s ==========\n" % ( + + nb_schemas_tests, node.lineNo(), sections)) + resources = {} + if debug: + print "test %d line %d" % (nb_schemas_tests, node.lineNo()) + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, None) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, None) + + tsts = node.xpathEval('incorrect') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <incorrect> example" %(node.lineNo()) + schema = handle_incorrect(tsts[0]) + else: + tsts = node.xpathEval('correct') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <correct> example"% (node.lineNo()) + schema = handle_correct(tsts[0]) + else: + print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo()) + + nb_schemas_tests = nb_schemas_tests + 1; + + valids = node.xpathEval('valid') + invalids = node.xpathEval('invalid') + nb_instances_tests = nb_instances_tests + len(valids) + len(invalids) + if schema != None: + for valid in valids: + handle_valid(valid, schema) + for invalid in invalids: + handle_invalid(invalid, schema) + + +# +# handle a testSuite element +# +def handle_testSuite(node, level = 0): + global nb_schemas_tests, nb_schemas_success, nb_schemas_failed + global nb_instances_tests, nb_instances_success, nb_instances_failed + global quiet + if level >= 1: + old_schemas_tests = nb_schemas_tests + old_schemas_success = nb_schemas_success + old_schemas_failed = nb_schemas_failed + old_instances_tests = nb_instances_tests + old_instances_success = nb_instances_success + old_instances_failed = nb_instances_failed + + docs = node.xpathEval('documentation') + authors = node.xpathEval('author') + if docs != []: + msg = "" + for doc in docs: + msg = msg + doc.content + " " + if authors != []: + msg = msg + "written by " + for author in authors: + msg = msg + author.content + " " + if quiet == 0: + print msg + sections = node.xpathEval('section') + if sections != [] and level <= 0: + msg = "" + for section in sections: + msg = msg + section.content + " " + if quiet == 0: + print "Tests for section %s" % (msg) + for test in node.xpathEval('testCase'): + handle_testCase(test) + for test in node.xpathEval('testSuite'): + handle_testSuite(test, level + 1) + + + if verbose and level >= 1 and sections != []: + msg = "" + for section in sections: + msg = msg + section.content + " " + print "Result of tests for section %s" % (msg) + if nb_schemas_tests != old_schemas_tests: + print "found %d test schemas: %d success %d failures" % ( + nb_schemas_tests - old_schemas_tests, + nb_schemas_success - old_schemas_success, + nb_schemas_failed - old_schemas_failed) + if nb_instances_tests != old_instances_tests: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests - old_instances_tests, + nb_instances_success - old_instances_success, + nb_instances_failed - old_instances_failed) +# +# Parse the conf file +# +libxml2.substituteEntitiesDefault(1); +testsuite = libxml2.parseFile(CONF) +libxml2.setEntityLoader(resolver) +root = testsuite.getRootElement() +if root.name != 'testSuite': + print "%s doesn't start with a testSuite element, aborting" % (CONF) + sys.exit(1) +if quiet == 0: + print "Running Relax NG testsuite" +handle_testSuite(root) + +if quiet == 0: + print "\nTOTAL:\n" +if quiet == 0 or nb_schemas_failed != 0: + print "found %d test schemas: %d success %d failures" % ( + nb_schemas_tests, nb_schemas_success, nb_schemas_failed) +if quiet == 0 or nb_instances_failed != 0: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests, nb_instances_success, nb_instances_failed) + +testsuite.freeDoc() + +# Memory debug specific +libxml2.relaxNGCleanupTypes() +libxml2.cleanupParser() +if libxml2.debugMemory(1) == 0: + if quiet == 0: + print "OK" +else: + print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + libxml2.dumpMemory()
diff --git a/libxml2-2.7.7/check-relaxng-test-suite2.py b/libxml2-2.7.7/check-relaxng-test-suite2.py new file mode 100755 index 0000000..8618db7 --- /dev/null +++ b/libxml2-2.7.7/check-relaxng-test-suite2.py
@@ -0,0 +1,418 @@ +#!/usr/bin/python +import sys +import time +import os +import string +import StringIO +sys.path.insert(0, "python") +import libxml2 + +# Memory debug specific +libxml2.debugMemory(1) +debug = 0 +quiet = 1 + +# +# the testsuite description +# +CONF=os.path.join(os.path.dirname(__file__), "test/relaxng/testsuite.xml") +LOG="check-relaxng-test-suite2.log" + +log = open(LOG, "w") +nb_schemas_tests = 0 +nb_schemas_success = 0 +nb_schemas_failed = 0 +nb_instances_tests = 0 +nb_instances_success = 0 +nb_instances_failed = 0 + +libxml2.lineNumbersDefault(1) +# +# Resolver callback +# +resources = {} +def resolver(URL, ID, ctxt): + global resources + + if resources.has_key(URL): + return(StringIO.StringIO(resources[URL])) + log.write("Resolver failure: asked %s\n" % (URL)) + log.write("resources: %s\n" % (resources)) + return None + +# +# Load the previous results +# +#results = {} +#previous = {} +# +#try: +# res = libxml2.parseFile(RES) +#except: +# log.write("Could not parse %s" % (RES)) + +# +# handle a valid instance +# +def handle_valid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = node.prop("dtd") + if instance == None: + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + +# mem = libxml2.debugMemory(1); + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nFailed to parse correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + return + + if debug: + print "instance line %d" % (node.lineNo()) + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt + except: + ret = -1 + + doc.freeDoc() +# if mem != libxml2.debugMemory(1): +# print "validating instance %d line %d leaks" % ( +# nb_instances_tests, node.lineNo()) + + if ret != 0: + log.write("\nFailed to validate correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an invalid instance +# +def handle_invalid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = node.prop("dtd") + if instance == None: + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + +# mem = libxml2.debugMemory(1); + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nStrange: failed to parse incorrect instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + return + + if debug: + print "instance line %d" % (node.lineNo()) + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt + + except: + ret = -1 + + doc.freeDoc() +# mem2 = libxml2.debugMemory(1) +# if mem != mem2: +# print "validating instance %d line %d leaks %d bytes" % ( +# nb_instances_tests, node.lineNo(), mem2 - mem) + + if ret == 0: + log.write("\nFailed to detect validation problem in instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an incorrect test +# +def handle_correct(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs == None: + log.write("\nFailed to compile correct schema:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: + nb_schemas_success = nb_schemas_success + 1 + return rngs + +def handle_incorrect(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs != None: + log.write("\nFailed to detect schema error in:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: +# log.write("\nSuccess detecting schema error in:\n-----\n") +# log.write(schema) +# log.write("\n-----\n") + nb_schemas_success = nb_schemas_success + 1 + return None + +# +# resource handling: keep a dictionary of URL->string mappings +# +def handle_resource(node, dir): + global resources + + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + res = "" + child = node.children + while child != None: + if child.type != 'text': + res = res + child.serialize() + child = child.next + resources[name] = res + +# +# dir handling: pseudo directory resources +# +def handle_dir(node, dir): + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, name) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, name) + +# +# handle a testCase element +# +def handle_testCase(node): + global nb_schemas_tests + global nb_instances_tests + global resources + + sections = node.xpathEval('string(section)') + log.write("\n ======== test %d line %d section %s ==========\n" % ( + + nb_schemas_tests, node.lineNo(), sections)) + resources = {} + if debug: + print "test %d line %d" % (nb_schemas_tests, node.lineNo()) + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, None) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, None) + + tsts = node.xpathEval('incorrect') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <incorrect> example" %(node.lineNo()) + schema = handle_incorrect(tsts[0]) + else: + tsts = node.xpathEval('correct') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <correct> example"% (node.lineNo()) + schema = handle_correct(tsts[0]) + else: + print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo()) + + nb_schemas_tests = nb_schemas_tests + 1; + + valids = node.xpathEval('valid') + invalids = node.xpathEval('invalid') + nb_instances_tests = nb_instances_tests + len(valids) + len(invalids) + if schema != None: + for valid in valids: + handle_valid(valid, schema) + for invalid in invalids: + handle_invalid(invalid, schema) + + +# +# handle a testSuite element +# +def handle_testSuite(node, level = 0): + global nb_schemas_tests, nb_schemas_success, nb_schemas_failed + global nb_instances_tests, nb_instances_success, nb_instances_failed + if level >= 1: + old_schemas_tests = nb_schemas_tests + old_schemas_success = nb_schemas_success + old_schemas_failed = nb_schemas_failed + old_instances_tests = nb_instances_tests + old_instances_success = nb_instances_success + old_instances_failed = nb_instances_failed + + docs = node.xpathEval('documentation') + authors = node.xpathEval('author') + if docs != []: + msg = "" + for doc in docs: + msg = msg + doc.content + " " + if authors != []: + msg = msg + "written by " + for author in authors: + msg = msg + author.content + " " + if quiet == 0: + print msg + sections = node.xpathEval('section') + if sections != [] and level <= 0: + msg = "" + for section in sections: + msg = msg + section.content + " " + if quiet == 0: + print "Tests for section %s" % (msg) + for test in node.xpathEval('testCase'): + handle_testCase(test) + for test in node.xpathEval('testSuite'): + handle_testSuite(test, level + 1) + + + if level >= 1 and sections != []: + msg = "" + for section in sections: + msg = msg + section.content + " " + print "Result of tests for section %s" % (msg) + if nb_schemas_tests != old_schemas_tests: + print "found %d test schemas: %d success %d failures" % ( + nb_schemas_tests - old_schemas_tests, + nb_schemas_success - old_schemas_success, + nb_schemas_failed - old_schemas_failed) + if nb_instances_tests != old_instances_tests: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests - old_instances_tests, + nb_instances_success - old_instances_success, + nb_instances_failed - old_instances_failed) +# +# Parse the conf file +# +libxml2.substituteEntitiesDefault(1); +testsuite = libxml2.parseFile(CONF) + +# +# Error and warnng callbacks +# +def callback(ctx, str): + global log + log.write("%s%s" % (ctx, str)) + +libxml2.registerErrorHandler(callback, "") + +libxml2.setEntityLoader(resolver) +root = testsuite.getRootElement() +if root.name != 'testSuite': + print "%s doesn't start with a testSuite element, aborting" % (CONF) + sys.exit(1) +if quiet == 0: + print "Running Relax NG testsuite" +handle_testSuite(root) + +if quiet == 0: + print "\nTOTAL:\n" +if quiet == 0 or nb_schemas_failed != 0: + print "found %d test schemas: %d success %d failures" % ( + nb_schemas_tests, nb_schemas_success, nb_schemas_failed) +if quiet == 0 or nb_instances_failed != 0: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests, nb_instances_success, nb_instances_failed) + + +testsuite.freeDoc() + +# Memory debug specific +libxml2.relaxNGCleanupTypes() +libxml2.cleanupParser() +if libxml2.debugMemory(1) == 0: + if quiet == 0: + print "OK" +else: + print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + libxml2.dumpMemory()
diff --git a/libxml2-2.7.7/check-xinclude-test-suite.py b/libxml2-2.7.7/check-xinclude-test-suite.py new file mode 100755 index 0000000..f470011 --- /dev/null +++ b/libxml2-2.7.7/check-xinclude-test-suite.py
@@ -0,0 +1,221 @@ +#!/usr/bin/python +import sys +import time +import os +import string +sys.path.insert(0, "python") +import libxml2 + +# +# the testsuite description +# +DIR="xinclude-test-suite" +CONF="testdescr.xml" +LOG="check-xinclude-test-suite.log" + +log = open(LOG, "w") + +os.chdir(DIR) + +test_nr = 0 +test_succeed = 0 +test_failed = 0 +test_error = 0 +# +# Error and warning handlers +# +error_nr = 0 +error_msg = '' + +def errorHandler(ctx, str): + global error_nr + global error_msg + + if string.find(str, "error:") >= 0: + error_nr = error_nr + 1 + if len(error_msg) < 300: + if len(error_msg) == 0 or error_msg[-1] == '\n': + error_msg = error_msg + " >>" + str + else: + error_msg = error_msg + str + +libxml2.registerErrorHandler(errorHandler, None) + +def testXInclude(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + print "testXInclude(%s, %s)" % (filename, id) + return 1 + +def runTest(test, basedir): + global test_nr + global test_failed + global test_error + global test_succeed + global error_msg + global log + + fatal_error = 0 + uri = test.prop('href') + id = test.prop('id') + type = test.prop('type') + if uri == None: + print "Test without ID:", uri + return -1 + if id == None: + print "Test without URI:", id + return -1 + if type == None: + print "Test without URI:", id + return -1 + if basedir != None: + URI = basedir + "/" + uri + else: + URI = uri + if os.access(URI, os.R_OK) == 0: + print "Test %s missing: base %s uri %s" % (URI, basedir, uri) + return -1 + + expected = None + outputfile = None + diff = None + if type != 'error': + output = test.xpathEval('string(output)') + if output == 'No output file.': + output = None + if output == '': + output = None + if output != None: + if basedir != None: + output = basedir + "/" + output + if os.access(output, os.R_OK) == 0: + print "Result for %s missing: %s" % (id, output) + output = None + else: + try: + f = open(output) + expected = f.read() + outputfile = output + except: + print "Result for %s unreadable: %s" % (id, output) + + try: + # print "testing %s" % (URI) + doc = libxml2.parseFile(URI) + except: + doc = None + if doc != None: + res = doc.xincludeProcess() + if res >= 0 and expected != None: + result = doc.serialize() + if result != expected: + print "Result for %s differs" % (id) + open("xinclude.res", "w").write(result) + diff = os.popen("diff %s xinclude.res" % outputfile).read() + + doc.freeDoc() + else: + print "Failed to parse %s" % (URI) + res = -1 + + + + test_nr = test_nr + 1 + if type == 'success': + if res > 0: + test_succeed = test_succeed + 1 + elif res == 0: + test_failed = test_failed + 1 + print "Test %s: no substitution done ???" % (id) + elif res < 0: + test_error = test_error + 1 + print "Test %s: failed valid XInclude processing" % (id) + elif type == 'error': + if res > 0: + test_error = test_error + 1 + print "Test %s: failed to detect invalid XInclude processing" % (id) + elif res == 0: + test_failed = test_failed + 1 + print "Test %s: Invalid but no substitution done" % (id) + elif res < 0: + test_succeed = test_succeed + 1 + elif type == 'optional': + if res > 0: + test_succeed = test_succeed + 1 + else: + print "Test %s: failed optional test" % (id) + + # Log the ontext + if res != 1: + log.write("Test ID %s\n" % (id)) + log.write(" File: %s\n" % (URI)) + content = string.strip(test.content) + while content[-1] == '\n': + content = content[0:-1] + log.write(" %s:%s\n\n" % (type, content)) + if error_msg != '': + log.write(" ----\n%s ----\n" % (error_msg)) + error_msg = '' + log.write("\n") + if diff != None: + log.write("diff from test %s:\n" %(id)) + log.write(" -----------\n%s\n -----------\n" % (diff)); + + return 0 + + +def runTestCases(case): + creator = case.prop('creator') + if creator != None: + print "=>", creator + base = case.getBase(None) + basedir = case.prop('basedir') + if basedir != None: + base = libxml2.buildURI(basedir, base) + test = case.children + while test != None: + if test.name == 'testcase': + runTest(test, base) + if test.name == 'testcases': + runTestCases(test) + test = test.next + +conf = libxml2.parseFile(CONF) +if conf == None: + print "Unable to load %s" % CONF + sys.exit(1) + +testsuite = conf.getRootElement() +if testsuite.name != 'testsuite': + print "Expecting TESTSUITE root element: aborting" + sys.exit(1) + +profile = testsuite.prop('PROFILE') +if profile != None: + print profile + +start = time.time() + +case = testsuite.children +while case != None: + if case.name == 'testcases': + old_test_nr = test_nr + old_test_succeed = test_succeed + old_test_failed = test_failed + old_test_error = test_error + runTestCases(case) + print " Ran %d tests: %d suceeded, %d failed and %d generated an error" % ( + test_nr - old_test_nr, test_succeed - old_test_succeed, + test_failed - old_test_failed, test_error - old_test_error) + case = case.next + +conf.freeDoc() +log.close() + +print "Ran %d tests: %d suceeded, %d failed and %d generated an error in %.2f s." % ( + test_nr, test_succeed, test_failed, test_error, time.time() - start)
diff --git a/libxml2-2.7.7/check-xml-test-suite.py b/libxml2-2.7.7/check-xml-test-suite.py new file mode 100755 index 0000000..2de07b1 --- /dev/null +++ b/libxml2-2.7.7/check-xml-test-suite.py
@@ -0,0 +1,409 @@ +#!/usr/bin/python +import sys +import time +import os +import string +sys.path.insert(0, "python") +import libxml2 + +test_nr = 0 +test_succeed = 0 +test_failed = 0 +test_error = 0 + +# +# the testsuite description +# +CONF="xml-test-suite/xmlconf/xmlconf.xml" +LOG="check-xml-test-suite.log" + +log = open(LOG, "w") + +# +# Error and warning handlers +# +error_nr = 0 +error_msg = '' +def errorHandler(ctx, str): + global error_nr + global error_msg + + error_nr = error_nr + 1 + if len(error_msg) < 300: + if len(error_msg) == 0 or error_msg[-1] == '\n': + error_msg = error_msg + " >>" + str + else: + error_msg = error_msg + str + +libxml2.registerErrorHandler(errorHandler, None) + +#warning_nr = 0 +#warning = '' +#def warningHandler(ctx, str): +# global warning_nr +# global warning +# +# warning_nr = warning_nr + 1 +# warning = warning + str +# +#libxml2.registerWarningHandler(warningHandler, None) + +# +# Used to load the XML testsuite description +# +def loadNoentDoc(filename): + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return None + ctxt.replaceEntities(1) + ctxt.parseDocument() + try: + doc = ctxt.doc() + except: + doc = None + if ctxt.wellFormed() != 1: + doc.freeDoc() + return None + return doc + +# +# The conformance testing routines +# + +def testNotWf(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + if doc != None: + doc.freeDoc() + if ret == 0 or ctxt.wellFormed() != 0: + print "%s: error: Well Formedness error not detected" % (id) + log.write("%s: error: Well Formedness error not detected\n" % (id)) + return 0 + return 1 + +def testNotWfEnt(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.replaceEntities(1) + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + if doc != None: + doc.freeDoc() + if ret == 0 or ctxt.wellFormed() != 0: + print "%s: error: Well Formedness error not detected" % (id) + log.write("%s: error: Well Formedness error not detected\n" % (id)) + return 0 + return 1 + +def testNotWfEntDtd(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.replaceEntities(1) + ctxt.loadSubset(1) + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + if doc != None: + doc.freeDoc() + if ret == 0 or ctxt.wellFormed() != 0: + print "%s: error: Well Formedness error not detected" % (id) + log.write("%s: error: Well Formedness error not detected\n" % (id)) + return 0 + return 1 + +def testWfEntDtd(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.replaceEntities(1) + ctxt.loadSubset(1) + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + if doc == None or ret != 0 or ctxt.wellFormed() == 0: + print "%s: error: wrongly failed to parse the document" % (id) + log.write("%s: error: wrongly failed to parse the document\n" % (id)) + if doc != None: + doc.freeDoc() + return 0 + if error_nr != 0: + print "%s: warning: WF document generated an error msg" % (id) + log.write("%s: error: WF document generated an error msg\n" % (id)) + doc.freeDoc() + return 2 + doc.freeDoc() + return 1 + +def testError(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.replaceEntities(1) + ctxt.loadSubset(1) + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + if doc != None: + doc.freeDoc() + if ctxt.wellFormed() == 0: + print "%s: warning: failed to parse the document but accepted" % (id) + log.write("%s: warning: failed to parse the document but accepte\n" % (id)) + return 2 + if error_nr != 0: + print "%s: warning: WF document generated an error msg" % (id) + log.write("%s: error: WF document generated an error msg\n" % (id)) + return 2 + return 1 + +def testInvalid(filename, id): + global error_nr + global error_msg + global log + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.validate(1) + ret = ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + valid = ctxt.isValid() + if doc == None: + print "%s: error: wrongly failed to parse the document" % (id) + log.write("%s: error: wrongly failed to parse the document\n" % (id)) + return 0 + if valid == 1: + print "%s: error: Validity error not detected" % (id) + log.write("%s: error: Validity error not detected\n" % (id)) + doc.freeDoc() + return 0 + if error_nr == 0: + print "%s: warning: Validity error not reported" % (id) + log.write("%s: warning: Validity error not reported\n" % (id)) + doc.freeDoc() + return 2 + + doc.freeDoc() + return 1 + +def testValid(filename, id): + global error_nr + global error_msg + + error_nr = 0 + error_msg = '' + + ctxt = libxml2.createFileParserCtxt(filename) + if ctxt == None: + return -1 + ctxt.validate(1) + ctxt.parseDocument() + + try: + doc = ctxt.doc() + except: + doc = None + valid = ctxt.isValid() + if doc == None: + print "%s: error: wrongly failed to parse the document" % (id) + log.write("%s: error: wrongly failed to parse the document\n" % (id)) + return 0 + if valid != 1: + print "%s: error: Validity check failed" % (id) + log.write("%s: error: Validity check failed\n" % (id)) + doc.freeDoc() + return 0 + if error_nr != 0 or valid != 1: + print "%s: warning: valid document reported an error" % (id) + log.write("%s: warning: valid document reported an error\n" % (id)) + doc.freeDoc() + return 2 + doc.freeDoc() + return 1 + +def runTest(test): + global test_nr + global test_succeed + global test_failed + global error_msg + global log + + uri = test.prop('URI') + id = test.prop('ID') + if uri == None: + print "Test without ID:", uri + return -1 + if id == None: + print "Test without URI:", id + return -1 + base = test.getBase(None) + URI = libxml2.buildURI(uri, base) + if os.access(URI, os.R_OK) == 0: + print "Test %s missing: base %s uri %s" % (URI, base, uri) + return -1 + type = test.prop('TYPE') + if type == None: + print "Test %s missing TYPE" % (id) + return -1 + + extra = None + if type == "invalid": + res = testInvalid(URI, id) + elif type == "valid": + res = testValid(URI, id) + elif type == "not-wf": + extra = test.prop('ENTITIES') + # print URI + #if extra == None: + # res = testNotWfEntDtd(URI, id) + #elif extra == 'none': + # res = testNotWf(URI, id) + #elif extra == 'general': + # res = testNotWfEnt(URI, id) + #elif extra == 'both' or extra == 'parameter': + res = testNotWfEntDtd(URI, id) + #else: + # print "Unknow value %s for an ENTITIES test value" % (extra) + # return -1 + elif type == "error": + res = testError(URI, id) + else: + # TODO skipped for now + return -1 + + test_nr = test_nr + 1 + if res > 0: + test_succeed = test_succeed + 1 + elif res == 0: + test_failed = test_failed + 1 + elif res < 0: + test_error = test_error + 1 + + # Log the ontext + if res != 1: + log.write(" File: %s\n" % (URI)) + content = string.strip(test.content) + while content[-1] == '\n': + content = content[0:-1] + if extra != None: + log.write(" %s:%s:%s\n" % (type, extra, content)) + else: + log.write(" %s:%s\n\n" % (type, content)) + if error_msg != '': + log.write(" ----\n%s ----\n" % (error_msg)) + error_msg = '' + log.write("\n") + + return 0 + + +def runTestCases(case): + profile = case.prop('PROFILE') + if profile != None and \ + string.find(profile, "IBM XML Conformance Test Suite - Production") < 0: + print "=>", profile + test = case.children + while test != None: + if test.name == 'TEST': + runTest(test) + if test.name == 'TESTCASES': + runTestCases(test) + test = test.next + +conf = loadNoentDoc(CONF) +if conf == None: + print "Unable to load %s" % CONF + sys.exit(1) + +testsuite = conf.getRootElement() +if testsuite.name != 'TESTSUITE': + print "Expecting TESTSUITE root element: aborting" + sys.exit(1) + +profile = testsuite.prop('PROFILE') +if profile != None: + print profile + +start = time.time() + +case = testsuite.children +while case != None: + if case.name == 'TESTCASES': + old_test_nr = test_nr + old_test_succeed = test_succeed + old_test_failed = test_failed + old_test_error = test_error + runTestCases(case) + print " Ran %d tests: %d suceeded, %d failed and %d generated an error" % ( + test_nr - old_test_nr, test_succeed - old_test_succeed, + test_failed - old_test_failed, test_error - old_test_error) + case = case.next + +conf.freeDoc() +log.close() + +print "Ran %d tests: %d suceeded, %d failed and %d generated an error in %.2f s." % ( + test_nr, test_succeed, test_failed, test_error, time.time() - start)
diff --git a/libxml2-2.7.7/check-xsddata-test-suite.py b/libxml2-2.7.7/check-xsddata-test-suite.py new file mode 100755 index 0000000..c946129 --- /dev/null +++ b/libxml2-2.7.7/check-xsddata-test-suite.py
@@ -0,0 +1,420 @@ +#!/usr/bin/python +import sys +import time +import os +import string +import StringIO +sys.path.insert(0, "python") +import libxml2 + +# Memory debug specific +libxml2.debugMemory(1) +debug = 0 +verbose = 0 +quiet = 1 + +# +# the testsuite description +# +CONF=os.path.join(os.path.dirname(__file__), "test/xsdtest/xsdtestsuite.xml") +LOG="check-xsddata-test-suite.log" + +log = open(LOG, "w") +nb_schemas_tests = 0 +nb_schemas_success = 0 +nb_schemas_failed = 0 +nb_instances_tests = 0 +nb_instances_success = 0 +nb_instances_failed = 0 + +libxml2.lineNumbersDefault(1) +# +# Error and warnng callbacks +# +def callback(ctx, str): + global log + log.write("%s%s" % (ctx, str)) + +libxml2.registerErrorHandler(callback, "") + +# +# Resolver callback +# +resources = {} +def resolver(URL, ID, ctxt): + global resources + + if resources.has_key(URL): + return(StringIO.StringIO(resources[URL])) + log.write("Resolver failure: asked %s\n" % (URL)) + log.write("resources: %s\n" % (resources)) + return None + +# +# handle a valid instance +# +def handle_valid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = node.prop("dtd") + if instance == None: + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + + mem = libxml2.debugMemory(1); + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nFailed to parse correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + return + + if debug: + print "instance line %d" % (node.lineNo()) + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt + except: + ret = -1 + + doc.freeDoc() + if mem != libxml2.debugMemory(1): + print "validating instance %d line %d leaks" % ( + nb_instances_tests, node.lineNo()) + + if ret != 0: + log.write("\nFailed to validate correct instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an invalid instance +# +def handle_invalid(node, schema): + global log + global nb_instances_success + global nb_instances_failed + + instance = node.prop("dtd") + if instance == None: + instance = "" + child = node.children + while child != None: + if child.type != 'text': + instance = instance + child.serialize() + child = child.next + +# mem = libxml2.debugMemory(1); + + try: + doc = libxml2.parseDoc(instance) + except: + doc = None + + if doc == None: + log.write("\nStrange: failed to parse incorrect instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + return + + if debug: + print "instance line %d" % (node.lineNo()) + + try: + ctxt = schema.relaxNGNewValidCtxt() + ret = doc.relaxNGValidateDoc(ctxt) + del ctxt + + except: + ret = -1 + + doc.freeDoc() +# if mem != libxml2.debugMemory(1): +# print "validating instance %d line %d leaks" % ( +# nb_instances_tests, node.lineNo()) + + if ret == 0: + log.write("\nFailed to detect validation problem in instance:\n-----\n") + log.write(instance) + log.write("\n-----\n") + nb_instances_failed = nb_instances_failed + 1 + else: + nb_instances_success = nb_instances_success + 1 + +# +# handle an incorrect test +# +def handle_correct(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs == None: + log.write("\nFailed to compile correct schema:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: + nb_schemas_success = nb_schemas_success + 1 + return rngs + +def handle_incorrect(node): + global log + global nb_schemas_success + global nb_schemas_failed + + schema = "" + child = node.children + while child != None: + if child.type != 'text': + schema = schema + child.serialize() + child = child.next + + try: + rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema)) + rngs = rngp.relaxNGParse() + except: + rngs = None + if rngs != None: + log.write("\nFailed to detect schema error in:\n-----\n") + log.write(schema) + log.write("\n-----\n") + nb_schemas_failed = nb_schemas_failed + 1 + else: +# log.write("\nSuccess detecting schema error in:\n-----\n") +# log.write(schema) +# log.write("\n-----\n") + nb_schemas_success = nb_schemas_success + 1 + return None + +# +# resource handling: keep a dictionary of URL->string mappings +# +def handle_resource(node, dir): + global resources + + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + res = "" + child = node.children + while child != None: + if child.type != 'text': + res = res + child.serialize() + child = child.next + resources[name] = res + +# +# dir handling: pseudo directory resources +# +def handle_dir(node, dir): + try: + name = node.prop('name') + except: + name = None + + if name == None or name == '': + log.write("resource has no name") + return; + + if dir != None: +# name = libxml2.buildURI(name, dir) + name = dir + '/' + name + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, name) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, name) + +# +# handle a testCase element +# +def handle_testCase(node): + global nb_schemas_tests + global nb_instances_tests + global resources + + sections = node.xpathEval('string(section)') + log.write("\n ======== test %d line %d section %s ==========\n" % ( + + nb_schemas_tests, node.lineNo(), sections)) + resources = {} + if debug: + print "test %d line %d" % (nb_schemas_tests, node.lineNo()) + + dirs = node.xpathEval('dir') + for dir in dirs: + handle_dir(dir, None) + res = node.xpathEval('resource') + for r in res: + handle_resource(r, None) + + tsts = node.xpathEval('incorrect') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <incorrect> example" %(node.lineNo()) + schema = handle_incorrect(tsts[0]) + else: + tsts = node.xpathEval('correct') + if tsts != []: + if len(tsts) != 1: + print "warning test line %d has more than one <correct> example"% (node.lineNo()) + schema = handle_correct(tsts[0]) + else: + print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo()) + + nb_schemas_tests = nb_schemas_tests + 1; + + valids = node.xpathEval('valid') + invalids = node.xpathEval('invalid') + nb_instances_tests = nb_instances_tests + len(valids) + len(invalids) + if schema != None: + for valid in valids: + handle_valid(valid, schema) + for invalid in invalids: + handle_invalid(invalid, schema) + + +# +# handle a testSuite element +# +def handle_testSuite(node, level = 0): + global nb_schemas_tests, nb_schemas_success, nb_schemas_failed + global nb_instances_tests, nb_instances_success, nb_instances_failed + if verbose and level >= 0: + old_schemas_tests = nb_schemas_tests + old_schemas_success = nb_schemas_success + old_schemas_failed = nb_schemas_failed + old_instances_tests = nb_instances_tests + old_instances_success = nb_instances_success + old_instances_failed = nb_instances_failed + + docs = node.xpathEval('documentation') + authors = node.xpathEval('author') + if docs != []: + msg = "" + for doc in docs: + msg = msg + doc.content + " " + if authors != []: + msg = msg + "written by " + for author in authors: + msg = msg + author.content + " " + if quiet == 0: + print msg + sections = node.xpathEval('section') + if verbose and sections != [] and level <= 0: + msg = "" + for section in sections: + msg = msg + section.content + " " + if quiet == 0: + print "Tests for section %s" % (msg) + for test in node.xpathEval('testCase'): + handle_testCase(test) + for test in node.xpathEval('testSuite'): + handle_testSuite(test, level + 1) + + + if verbose and level >= 0 : + if sections != []: + msg = "" + for section in sections: + msg = msg + section.content + " " + print "Result of tests for section %s" % (msg) + elif docs != []: + msg = "" + for doc in docs: + msg = msg + doc.content + " " + print "Result of tests for %s" % (msg) + + if nb_schemas_tests != old_schemas_tests: + print "found %d test schemas: %d success %d failures" % ( + nb_schemas_tests - old_schemas_tests, + nb_schemas_success - old_schemas_success, + nb_schemas_failed - old_schemas_failed) + if nb_instances_tests != old_instances_tests: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests - old_instances_tests, + nb_instances_success - old_instances_success, + nb_instances_failed - old_instances_failed) +# +# Parse the conf file +# +libxml2.substituteEntitiesDefault(1); +testsuite = libxml2.parseFile(CONF) + +# +# Error and warnng callbacks +# +def callback(ctx, str): + global log + log.write("%s%s" % (ctx, str)) + +libxml2.registerErrorHandler(callback, "") + +libxml2.setEntityLoader(resolver) +root = testsuite.getRootElement() +if root.name != 'testSuite': + print "%s doesn't start with a testSuite element, aborting" % (CONF) + sys.exit(1) +if quiet == 0: + print "Running Relax NG testsuite" +handle_testSuite(root) + +if quiet == 0 or nb_schemas_failed != 0: + print "\nTOTAL:\nfound %d test schemas: %d success %d failures" % ( + nb_schemas_tests, nb_schemas_success, nb_schemas_failed) +if quiet == 0 or nb_instances_failed != 0: + print "found %d test instances: %d success %d failures" % ( + nb_instances_tests, nb_instances_success, nb_instances_failed) + +testsuite.freeDoc() + +# Memory debug specific +libxml2.relaxNGCleanupTypes() +libxml2.cleanupParser() +if libxml2.debugMemory(1) == 0: + if quiet == 0: + print "OK" +else: + print "Memory leak %d bytes" % (libxml2.debugMemory(1)) + libxml2.dumpMemory()
diff --git a/libxml2-2.7.7/chvalid.c b/libxml2-2.7.7/chvalid.c new file mode 100755 index 0000000..00dd962 --- /dev/null +++ b/libxml2-2.7.7/chvalid.c
@@ -0,0 +1,336 @@ +/* + * chvalid.c: this module implements the character range + * validation APIs + * + * This file is automatically generated from the cvs source + * definition files using the genChRanges.py Python script + * + * Generation date: Mon Mar 27 11:09:48 2006 + * Sources: chvalid.def + * William Brack <wbrack@mmm.com.hk> + */ + +#define IN_LIBXML +#include "libxml.h" +#include <libxml/chvalid.h> + +/* + * The initial tables ({func_name}_tab) are used to validate whether a + * single-byte character is within the specified group. Each table + * contains 256 bytes, with each byte representing one of the 256 + * possible characters. If the table byte is set, the character is + * allowed. + * + */ +const unsigned char xmlIsPubidChar_tab[256] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; + +static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131}, + {0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3}, + {0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8}, + {0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c}, + {0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da}, + {0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3}, + {0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481}, + {0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb}, + {0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559}, + {0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a}, + {0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce}, + {0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939}, + {0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990}, + {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9}, + {0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a}, + {0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33}, + {0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e}, + {0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91}, + {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9}, + {0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39}, + {0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, + {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c}, + {0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5}, + {0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c}, + {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, + {0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, + {0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e}, + {0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82}, + {0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d}, + {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5}, + {0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0}, + {0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47}, + {0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100}, + {0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c}, + {0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140}, + {0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155}, + {0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165}, + {0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173}, + {0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab}, + {0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2}, + {0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b}, + {0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, + {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b}, + {0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, + {0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, + {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, + {0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182}, + {0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}}; +const xmlChRangeGroup xmlIsBaseCharGroup = + {197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0}; + +static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff}, + {0xe000, 0xfffd}}; +static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}}; +const xmlChRangeGroup xmlIsCharGroup = + {2, 1, xmlIsChar_srng, xmlIsChar_lrng}; + +static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345}, + {0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9}, + {0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4}, + {0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df}, + {0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903}, + {0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954}, + {0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be}, + {0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd}, + {0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c}, + {0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48}, + {0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc}, + {0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03}, + {0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d}, + {0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, + {0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44}, + {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83}, + {0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6}, + {0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d}, + {0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e}, + {0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd}, + {0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39}, + {0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b}, + {0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7}, + {0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f}, + {0x3099, 0x3099}, {0x309a, 0x309a}}; +const xmlChRangeGroup xmlIsCombiningGroup = + {95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0}; + +static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669}, + {0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f}, + {0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f}, + {0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9}, + {0xf20, 0xf29}}; +const xmlChRangeGroup xmlIsDigitGroup = + {14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0}; + +static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0}, + {0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46}, + {0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e}, + {0x30fc, 0x30fe}}; +const xmlChRangeGroup xmlIsExtenderGroup = + {10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0}; + +static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007}, + {0x3021, 0x3029}, {0x4e00, 0x9fa5}}; +const xmlChRangeGroup xmlIsIdeographicGroup = + {3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0}; + + +/** + * xmlCharInRange: + * @val: character to be validated + * @rptr: pointer to range to be used to validate + * + * Does a binary search of the range table to determine if char + * is valid + * + * Returns: true if character valid, false otherwise + */ +int +xmlCharInRange (unsigned int val, const xmlChRangeGroup *rptr) { + int low, high, mid; + const xmlChSRange *sptr; + const xmlChLRange *lptr; + + if (rptr == NULL) return(0); + if (val < 0x10000) { /* is val in 'short' or 'long' array? */ + if (rptr->nbShortRange == 0) + return 0; + low = 0; + high = rptr->nbShortRange - 1; + sptr = rptr->shortRange; + while (low <= high) { + mid = (low + high) / 2; + if ((unsigned short) val < sptr[mid].low) { + high = mid - 1; + } else { + if ((unsigned short) val > sptr[mid].high) { + low = mid + 1; + } else { + return 1; + } + } + } + } else { + if (rptr->nbLongRange == 0) { + return 0; + } + low = 0; + high = rptr->nbLongRange - 1; + lptr = rptr->longRange; + while (low <= high) { + mid = (low + high) / 2; + if (val < lptr[mid].low) { + high = mid - 1; + } else { + if (val > lptr[mid].high) { + low = mid + 1; + } else { + return 1; + } + } + } + } + return 0; +} + + +/** + * xmlIsBaseChar: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsBaseChar_ch or xmlIsBaseCharQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsBaseChar(unsigned int ch) { + return(xmlIsBaseCharQ(ch)); +} + + +/** + * xmlIsBlank: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsBlank_ch or xmlIsBlankQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsBlank(unsigned int ch) { + return(xmlIsBlankQ(ch)); +} + + +/** + * xmlIsChar: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsChar_ch or xmlIsCharQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsChar(unsigned int ch) { + return(xmlIsCharQ(ch)); +} + + +/** + * xmlIsCombining: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsCombiningQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsCombining(unsigned int ch) { + return(xmlIsCombiningQ(ch)); +} + + +/** + * xmlIsDigit: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsDigit_ch or xmlIsDigitQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsDigit(unsigned int ch) { + return(xmlIsDigitQ(ch)); +} + + +/** + * xmlIsExtender: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsExtender_ch or xmlIsExtenderQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsExtender(unsigned int ch) { + return(xmlIsExtenderQ(ch)); +} + + +/** + * xmlIsIdeographic: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsIdeographicQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsIdeographic(unsigned int ch) { + return(xmlIsIdeographicQ(ch)); +} + + +/** + * xmlIsPubidChar: + * @ch: character to validate + * + * This function is DEPRECATED. + * Use xmlIsPubidChar_ch or xmlIsPubidCharQ instead + * + * Returns true if argument valid, false otherwise + */ +int +xmlIsPubidChar(unsigned int ch) { + return(xmlIsPubidCharQ(ch)); +} + +#define bottom_chvalid +#include "elfgcchack.h"
diff --git a/libxml2-2.7.7/config.guess b/libxml2-2.7.7/config.guess new file mode 100755 index 0000000..dc84c68 --- /dev/null +++ b/libxml2-2.7.7/config.guess
@@ -0,0 +1,1501 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to <config-patches@gnu.org> and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End:
diff --git a/libxml2-2.7.7/config.h.in b/libxml2-2.7.7/config.h.in new file mode 100644 index 0000000..6f45c6c --- /dev/null +++ b/libxml2-2.7.7/config.h.in
@@ -0,0 +1,308 @@ +/* config.h.in. Generated from configure.in by autoheader. */ +#undef PACKAGE +#undef VERSION +#undef HAVE_LIBZ +#undef HAVE_LIBM +#undef HAVE_ISINF +#undef HAVE_ISNAN +#undef HAVE_LIBHISTORY +#undef HAVE_LIBREADLINE +#undef HAVE_LIBPTHREAD +#undef HAVE_PTHREAD_H + +/* Define if IPV6 support is there */ +#undef SUPPORT_IP6 + +/* Define if getaddrinfo is there */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the <ansidecl.h> header file. */ +#undef HAVE_ANSIDECL_H + +/* Define to 1 if you have the <arpa/inet.h> header file. */ +#undef HAVE_ARPA_INET_H + +/* Define to 1 if you have the <arpa/nameser.h> header file. */ +#undef HAVE_ARPA_NAMESER_H + +/* Whether struct sockaddr::__ss_family exists */ +#undef HAVE_BROKEN_SS_FAMILY + +/* Define to 1 if you have the `class' function. */ +#undef HAVE_CLASS + +/* Define to 1 if you have the <ctype.h> header file. */ +#undef HAVE_CTYPE_H + +/* Define to 1 if you have the <dirent.h> header file. */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* Have dlopen based dso */ +#undef HAVE_DLOPEN + +/* Define to 1 if you have the <dl.h> header file. */ +#undef HAVE_DL_H + +/* Define to 1 if you have the <errno.h> header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `finite' function. */ +#undef HAVE_FINITE + +/* Define to 1 if you have the <float.h> header file. */ +#undef HAVE_FLOAT_H + +/* Define to 1 if you have the `fpclass' function. */ +#undef HAVE_FPCLASS + +/* Define to 1 if you have the `fprintf' function. */ +#undef HAVE_FPRINTF + +/* Define to 1 if you have the `fp_class' function. */ +#undef HAVE_FP_CLASS + +/* Define to 1 if you have the <fp_class.h> header file. */ +#undef HAVE_FP_CLASS_H + +/* Define to 1 if you have the `ftime' function. */ +#undef HAVE_FTIME + +/* Define if getaddrinfo is there */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the <ieeefp.h> header file. */ +#undef HAVE_IEEEFP_H + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the <inttypes.h.h> header file. */ +#undef HAVE_INTTYPES_H_H + +/* Define if isinf is there */ +#undef HAVE_ISINF + +/* Define if isnan is there */ +#undef HAVE_ISNAN + +/* Define to 1 if you have the `isnand' function. */ +#undef HAVE_ISNAND + +/* Define if history library is there (-lhistory) */ +#undef HAVE_LIBHISTORY + +/* Define if pthread library is there (-lpthread) */ +#undef HAVE_LIBPTHREAD + +/* Define if readline library is there (-lreadline) */ +#undef HAVE_LIBREADLINE + +/* Have compression library */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the `localtime' function. */ +#undef HAVE_LOCALTIME + +/* Define to 1 if you have the <malloc.h> header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the <math.h> header file. */ +#undef HAVE_MATH_H + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the <nan.h> header file. */ +#undef HAVE_NAN_H + +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the <netdb.h> header file. */ +#undef HAVE_NETDB_H + +/* Define to 1 if you have the <netinet/in.h> header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the <poll.h> header file. */ +#undef HAVE_POLL_H + +/* Define to 1 if you have the `printf' function. */ +#undef HAVE_PRINTF + +/* Define if <pthread.h> is there */ +#undef HAVE_PTHREAD_H + +/* Define to 1 if you have the <resolv.h> header file. */ +#undef HAVE_RESOLV_H + +/* Have shl_load based dso */ +#undef HAVE_SHLLOAD + +/* Define to 1 if you have the `signal' function. */ +#undef HAVE_SIGNAL + +/* Define to 1 if you have the <signal.h> header file. */ +#undef HAVE_SIGNAL_H + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `sprintf' function. */ +#undef HAVE_SPRINTF + +/* Define to 1 if you have the `sscanf' function. */ +#undef HAVE_SSCANF + +/* Define to 1 if you have the `stat' function. */ +#undef HAVE_STAT + +/* Define to 1 if you have the <stdarg.h> header file. */ +#undef HAVE_STDARG_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strftime' function. */ +#undef HAVE_STRFTIME + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/mman.h> header file. */ +#undef HAVE_SYS_MMAN_H + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the <sys/select.h> header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the <sys/socket.h> header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/timeb.h> header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the <sys/time.h> header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <time.h> header file. */ +#undef HAVE_TIME_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Whether va_copy() is available */ +#undef HAVE_VA_COPY + +/* Define to 1 if you have the `vfprintf' function. */ +#undef HAVE_VFPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the `vsprintf' function. */ +#undef HAVE_VSPRINTF + +/* Define to 1 if you have the <zlib.h> header file. */ +#undef HAVE_ZLIB_H + +/* Define to 1 if you have the `_stat' function. */ +#undef HAVE__STAT + +/* Whether __va_copy() is available */ +#undef HAVE___VA_COPY + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if the C compiler supports function prototypes. */ +#undef PROTOTYPES + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Support for IPv6 */ +#undef SUPPORT_IP6 + +/* Version number of package */ +#undef VERSION + +/* Determine what socket length (socklen_t) data type is */ +#undef XML_SOCKLEN_T + +/* Using the Win32 Socket implementation */ +#undef _WINSOCKAPI_ + +/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES + +/* Win32 Std C name mangling work-around */ +#undef snprintf + +/* ss_family is not defined here, use __ss_family instead */ +#undef ss_family + +/* Win32 Std C name mangling work-around */ +#undef vsnprintf
diff --git a/libxml2-2.7.7/config.sub b/libxml2-2.7.7/config.sub new file mode 100755 index 0000000..2a55a50 --- /dev/null +++ b/libxml2-2.7.7/config.sub
@@ -0,0 +1,1705 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End:
diff --git a/libxml2-2.7.7/configure b/libxml2-2.7.7/configure new file mode 100755 index 0000000..1d1c54a --- /dev/null +++ b/libxml2-2.7.7/configure Binary files differ
diff --git a/libxml2-2.7.7/configure.in b/libxml2-2.7.7/configure.in new file mode 100644 index 0000000..17c11cd --- /dev/null +++ b/libxml2-2.7.7/configure.in
@@ -0,0 +1,1462 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(entities.c) +AM_CONFIG_HEADER(config.h) +AC_CONFIG_MACRO_DIR([m4]) +AC_CANONICAL_HOST + +LIBXML_MAJOR_VERSION=2 +LIBXML_MINOR_VERSION=7 +LIBXML_MICRO_VERSION=7 +LIBXML_MICRO_VERSION_SUFFIX= +LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX +LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION + +LIBXML_VERSION_NUMBER=`expr $LIBXML_MAJOR_VERSION \* 10000 + $LIBXML_MINOR_VERSION \* 100 + $LIBXML_MICRO_VERSION` + +if test -f CVS/Entries ; then + extra=`grep ChangeLog CVS/Entries | grep -v LIBXML | sed -e s\%/ChangeLog/1\.%% -e s\%/.*$%%` + echo extra=$extra + if test "$extra" != "" + then + LIBXML_VERSION_EXTRA="-CVS$extra" + fi +else if test -d .svn ; then + extra=`svn info | grep Revision | sed 's+Revision: ++'` + echo extra=$extra + if test "$extra" != "" + then + LIBXML_VERSION_EXTRA="-SVN$extra" + fi +else if test -d .git ; then + extra=`git describe | sed 's+LIBXML[[0-9.]]*-++'` + echo extra=$extra + if test "$extra" != "" + then + LIBXML_VERSION_EXTRA="-GIT$extra" + fi +fi +fi +fi +AC_SUBST(LIBXML_MAJOR_VERSION) +AC_SUBST(LIBXML_MINOR_VERSION) +AC_SUBST(LIBXML_MICRO_VERSION) +AC_SUBST(LIBXML_VERSION) +AC_SUBST(LIBXML_VERSION_INFO) +AC_SUBST(LIBXML_VERSION_NUMBER) +AC_SUBST(LIBXML_VERSION_EXTRA) + +VERSION=${LIBXML_VERSION} + +AM_INIT_AUTOMAKE(libxml2, $VERSION) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_CPP +AC_PATH_PROG(RM, rm, /bin/rm) +AC_PATH_PROG(MV, mv, /bin/mv) +AC_PATH_PROG(TAR, tar, /bin/tar) +AC_PATH_PROG(PERL, perl, /usr/bin/perl) +AC_PATH_PROG(WGET, wget, /usr/bin/wget) +AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint) +AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc) + +dnl Make sure we have an ANSI compiler +AM_C_PROTOTYPES +test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant) + +AC_LIBTOOL_WIN32_DLL +AM_PROG_LIBTOOL + +dnl +dnl if the system support linker version scripts for symbol versioning +dnl then add it +dnl +VERSION_SCRIPT_FLAGS= +# lt_cv_prog_gnu_ld is from libtool 2.+ +if test "$lt_cv_prog_gnu_ld" = yes; then + VERSION_SCRIPT_FLAGS=-Wl,--version-script= +else + case $host in + *-*-sunos*) VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,";; + esac +fi +AC_SUBST(VERSION_SCRIPT_FLAGS) +AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -n "$VERSION_SCRIPT_FLAGS"]) + +dnl +dnl We process the AC_ARG_WITH first so that later we can modify +dnl some of them to try to prevent impossible combinations. This +dnl also allows up so alphabetize the choices +dnl + +dnl +dnl zlib option might change flags, so we save them initially +dnl +_cppflags="${CPPFLAGS}" +_ldflags="${LDFLAGS}" + +AC_ARG_WITH(c14n, +[ --with-c14n add the Canonicalization support (on)]) +AC_ARG_WITH(catalog, +[ --with-catalog add the Catalog support (on)]) +AC_ARG_WITH(debug, +[ --with-debug add the debugging module (on)]) +AC_ARG_WITH(docbook, +[ --with-docbook add Docbook SGML support (on)]) +AC_ARG_WITH(fexceptions, +[ --with-fexceptions add GCC flag -fexceptions for C++ exceptions (off)]) +AC_ARG_WITH(ftp, +[ --with-ftp add the FTP support (on)]) +AC_ARG_WITH(history, +[ --with-history add history support to xmllint shell(off)]) +AC_ARG_WITH(html, +[ --with-html add the HTML support (on)]) +dnl Specific dir for HTML output ? +AC_ARG_WITH(html-dir, AC_HELP_STRING([--with-html-dir=path], + [path to base html directory, default $datadir/doc/html]), + [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc']) + +AC_ARG_WITH(html-subdir, AC_HELP_STRING([--with-html-subdir=path], + [directory used under html-dir, default $PACKAGE-$VERSION/html]), + [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"], + [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"]) +AC_SUBST(HTML_DIR) +AC_ARG_WITH(http, +[ --with-http add the HTTP support (on)]) +AC_ARG_WITH(iconv, +[ --with-iconv[[=DIR]] add ICONV support (on)]) +AC_ARG_WITH(iso8859x, +[ --with-iso8859x add ISO8859X support if no iconv (on)]) +AC_ARG_WITH(legacy, +[ --with-legacy add deprecated APIs for compatibility (on)]) +AC_ARG_WITH(mem_debug, +[ --with-mem-debug add the memory debugging module (off)]) +AC_ARG_WITH(minimum, +[ --with-minimum build a minimally sized library (off)]) +AC_ARG_WITH(output, +[ --with-output add the serialization support (on)]) +AC_ARG_WITH(pattern, +[ --with-pattern add the xmlPattern selection interface (on)]) +AC_ARG_WITH(push, +[ --with-push add the PUSH parser interfaces (on)]) +AC_ARG_WITH(python, +[ --with-python[[=DIR]] build Python bindings if found]) +AC_ARG_WITH(reader, +[ --with-reader add the xmlReader parsing interface (on)]) +AC_ARG_WITH(readline, +[ --with-readline=DIR use readline in DIR],[ + if test "$withval" != "no" -a "$withval" != "yes"; then + RDL_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi +]) +AC_ARG_WITH(regexps, +[ --with-regexps add Regular Expressions support (on)]) +AC_ARG_WITH(run_debug, +[ --with-run-debug add the runtime debugging module (off)]) +AC_ARG_WITH(sax1, +[ --with-sax1 add the older SAX1 interface (on)]) +AC_ARG_WITH(schemas, +[ --with-schemas add Relax-NG and Schemas support (on)]) +AC_ARG_WITH(schematron, +[ --with-schematron add Schematron support (on)]) +AC_ARG_WITH(threads, +[ --with-threads add multithread support(on)]) +AC_ARG_WITH(thread-alloc, +[ --with-thread-alloc add per-thread memory(off)]) +AC_ARG_WITH(tree, +[ --with-tree add the DOM like tree manipulation APIs (on)]) +AC_ARG_WITH(valid, +[ --with-valid add the DTD validation support (on)]) +AC_ARG_WITH(writer, +[ --with-writer add the xmlWriter saving interface (on)]) +AC_ARG_WITH(xinclude, +[ --with-xinclude add the XInclude support (on)]) +AC_ARG_WITH(xpath, +[ --with-xpath add the XPATH support (on)]) +AC_ARG_WITH(xptr, +[ --with-xptr add the XPointer support (on)]) +AC_ARG_WITH(modules, +[ --with-modules add the dynamic modules support (on)]) +AC_ARG_WITH(zlib, +[ --with-zlib[[=DIR]] use libz in DIR],[ + if test "$withval" != "no" -a "$withval" != "yes"; then + Z_DIR=$withval + CPPFLAGS="${CPPFLAGS} -I$withval/include" + LDFLAGS="${LDFLAGS} -L$withval/lib" + fi +]) +AC_ARG_WITH(coverage, +[ --with-coverage build for code coverage with GCC (off)]) + +AC_ARG_ENABLE(rebuild-docs, +[ --enable-rebuild-docs[[=yes/no]] rebuild some generated docs [[default=yes]]]) +AM_CONDITIONAL([REBUILD_DOCS], [test "$enable_rebuild_docs" = "no"]) + +dnl +dnl hard dependancies on options +dnl +if test "$with_schemas" = "yes" +then + with_pattern=yes + with_regexps=yes +fi +if test "$with_schematron" = "yes" +then + with_pattern=yes + with_xpath=yes +fi +if test "$with_reader" = "yes" +then + with_push=yes +fi +if test "$with_xptr" = "yes" +then + with_xpath=yes +fi +dnl +dnl option to build a minimal libxml2 library +dnl +if test "$with_minimum" = "yes" +then + echo "Configuring for a minimal library" + if test "$with_c14n" = "" + then + with_c14n=no + fi + if test "$with_catalog" = "" + then + with_catalog=no + fi + echo So far so good! + if test "$with_debug" = "" + then + with_debug=no + fi + if test "$with_docbook" = "" + then + with_docbook=no + fi + if test "$with_fexceptions" = "" + then + with_fexceptions=no + fi + if test "$with_ftp" = "" + then + with_ftp=no + fi + if test "$with_history" = "" + then + with_history=no + fi + if test "$with_html" = "" + then + with_html=no + fi + if test "$with_http" = "" + then + with_http=no + fi + if test "$with_iconv" = "" + then + with_iconv=no + fi + if test "$with_iso8859x" = "" + then + with_iso8859x=no + fi + if test "$with_legacy" = "" + then + with_legacy=no + fi + if test "$with_mem_debug" = "" + then + with_mem_debug=no + fi + if test "$with_output" = "" + then + with_output=no + fi + if test "$with_pattern" = "" + then + with_pattern=no + fi + if test "$with_push" = "" + then + with_push=no + fi + if test "$with_python" = "" + then + with_python=no + fi + if test "$with_reader" = "" + then + with_reader=no + fi + if test "$with_readline" = "" + then + with_readline=no + fi + if test "$with_regexps" = "" + then + with_regexps=no + fi + if test "$with_run_debug" = "" + then + with_run_debug=no + fi + if test "$with_sax1" = "" + then + with_sax1=no + fi + if test "$with_schemas" = "" + then + with_schemas=no + fi + if test "$with_schematron" = "" + then + with_schematron=no + fi + if test "$with_threads" = "" + then + with_threads=no + fi + if test "$with_thread_alloc" = "" + then + with_thread_alloc=no + fi + if test "$with_tree" = "" + then + with_tree=no + fi + if test "$with_valid" = "" + then + with_valid=no + fi + if test "$with_writer" = "" + then + with_writer=no + fi + if test "$with_xinclude" = "" + then + with_xinclude=no + fi + if test "$with_xpath" = "" + then + with_xpath=no + fi + if test "$with_xptr" = "" + then + with_xptr=no + fi + if test "$with_zlib" = "" + then + with_zlib=no + fi + if test "$with_modules" = "" + then + with_modules=no + fi +fi + +echo Checking zlib + +dnl Checks for zlib library. + +WITH_ZLIB=0 +if test "$with_zlib" = "no"; then + echo "Disabling compression support" +else + AC_CHECK_HEADERS(zlib.h, + AC_CHECK_LIB(z, gzread,[ + AC_DEFINE([HAVE_LIBZ], [1], [Have compression library]) + WITH_ZLIB=1 + if test "x${Z_DIR}" != "x"; then + Z_CFLAGS="-I${Z_DIR}/include" + Z_LIBS="-L${Z_DIR}/lib -lz" + [case ${host} in + *-*-solaris*) + Z_LIBS="-L${Z_DIR}/lib -R${Z_DIR}/lib -lz" + ;; + esac] + else + Z_LIBS="-lz" + fi])) +fi + +AC_SUBST(Z_CFLAGS) +AC_SUBST(Z_LIBS) +AC_SUBST(WITH_ZLIB) + +CPPFLAGS=${_cppflags} +LDFLAGS=${_ldflags} + +echo Checking headers + +dnl Checks for header files. +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_CHECK_HEADERS([fcntl.h]) +AC_CHECK_HEADERS([unistd.h]) +AC_CHECK_HEADERS([ctype.h]) +AC_CHECK_HEADERS([dirent.h]) +AC_CHECK_HEADERS([errno.h]) +AC_CHECK_HEADERS([malloc.h]) +AC_CHECK_HEADERS([stdarg.h]) +AC_CHECK_HEADERS([sys/stat.h]) +AC_CHECK_HEADERS([sys/types.h]) +AC_CHECK_HEADERS([stdint.h]) +AC_CHECK_HEADERS([inttypes.h.h]) +AC_CHECK_HEADERS([time.h]) +AC_CHECK_HEADERS([ansidecl.h]) +AC_CHECK_HEADERS([ieeefp.h]) +AC_CHECK_HEADERS([nan.h]) +AC_CHECK_HEADERS([math.h]) +AC_CHECK_HEADERS([limits.h]) +AC_CHECK_HEADERS([fp_class.h]) +AC_CHECK_HEADERS([float.h]) +AC_CHECK_HEADERS([stdlib.h]) +AC_CHECK_HEADERS([sys/socket.h], [], [], +[#if HAVE_SYS_TYPES_H +# include <sys/types.h> +# endif +]) +AC_CHECK_HEADERS([netinet/in.h], [], [], +[#if HAVE_SYS_TYPES_H +# include <sys/types.h> +# endif +]) +AC_CHECK_HEADERS([arpa/inet.h], [], [], +[#if HAVE_SYS_TYPES_H +# include <sys/types.h> +# endif +#if HAVE_ARPA_INET_H +# include <arpa/inet.h> +# endif +]) +AC_CHECK_HEADERS([netdb.h]) +AC_CHECK_HEADERS([sys/time.h]) +AC_CHECK_HEADERS([sys/select.h]) +AC_CHECK_HEADERS([poll.h]) +AC_CHECK_HEADERS([sys/mman.h]) +AC_CHECK_HEADERS([sys/timeb.h]) +AC_CHECK_HEADERS([signal.h]) +AC_CHECK_HEADERS([arpa/nameser.h], [], [], +[#if HAVE_SYS_TYPES_H +# include <sys/types.h> +# endif +]) +AC_CHECK_HEADERS([resolv.h], [], [], +[#if HAVE_SYS_TYPES_H +# include <sys/types.h> +# endif +#if HAVE_NETINET_IN_H +# include <netinet/in.h> +# endif +#if HAVE_ARPA_NAMESER_H +# include <arpa/nameser.h> +# endif +]) +AC_CHECK_HEADERS([dl.h]) +AC_CHECK_HEADERS([dlfcn.h]) + + +echo Checking libraries + +dnl Checks for library functions. +AC_FUNC_STRFTIME +AC_CHECK_FUNCS(strdup strndup strerror) +AC_CHECK_FUNCS(finite isnand fp_class class fpclass) +AC_CHECK_FUNCS(strftime localtime gettimeofday ftime) +AC_CHECK_FUNCS(stat _stat signal) + +dnl Checking the standard string functions availability +AC_CHECK_FUNCS(printf sprintf fprintf snprintf vfprintf vsprintf vsnprintf sscanf,, + NEED_TRIO=1) + +dnl Checking for va_copy availability +AC_MSG_CHECKING([for va_copy]) +AC_TRY_LINK([#include <stdarg.h> +va_list ap1,ap2;], [va_copy(ap1,ap2);], +have_va_copy=yes, +have_va_copy=no) +AC_MSG_RESULT($have_va_copy) +if test x"$have_va_copy" = x"yes"; then + AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available]) +else + AC_MSG_CHECKING([for __va_copy]) + AC_TRY_LINK([#include <stdarg.h> + va_list ap1,ap2;], [__va_copy(ap1,ap2);], + have___va_copy=yes, + have___va_copy=no) + AC_MSG_RESULT($have___va_copy) + if test x"$have___va_copy" = x"yes"; then + AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available]) + fi +fi + +dnl Checks for inet libraries: +AC_SEARCH_LIBS(gethostent, [nsl]) +AC_SEARCH_LIBS(setsockopt, [socket net network]) +AC_SEARCH_LIBS(connect, [inet]) + +dnl Determine what socket length (socklen_t) data type is +AC_MSG_CHECKING([for type of socket length (socklen_t)]) +AC_TRY_COMPILE2([ +#include <stddef.h> +#include <sys/types.h> +#include <sys/socket.h>],[ +(void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL)],[ + AC_MSG_RESULT(socklen_t *) + XML_SOCKLEN_T=socklen_t],[ + AC_TRY_COMPILE2([ +#include <stddef.h> +#include <sys/types.h> +#include <sys/socket.h>],[ +(void)getsockopt (1, 1, 1, NULL, (size_t *)NULL)],[ + AC_MSG_RESULT(size_t *) + XML_SOCKLEN_T=size_t],[ + AC_TRY_COMPILE2([ +#include <stddef.h> +#include <sys/types.h> +#include <sys/socket.h>],[ +(void)getsockopt (1, 1, 1, NULL, (int *)NULL)],[ + AC_MSG_RESULT(int *) + XML_SOCKLEN_T=int],[ + AC_MSG_WARN(could not determine) + XML_SOCKLEN_T="int"])])]) +AC_DEFINE_UNQUOTED(XML_SOCKLEN_T, $XML_SOCKLEN_T, [Determine what socket length (socklen_t) data type is]) + +dnl ***********************Checking for availability of IPv6******************* + +AC_MSG_CHECKING([whether to enable IPv6]) +AC_ARG_ENABLE(ipv6, [ --enable-ipv6[[=yes/no]] enables compilation of IPv6 code [[default=yes]]],, enable_ipv6=yes) +if test "$with_minimum" = "yes" +then + enable_ipv6=no +fi +if test $enable_ipv6 = yes; then + have_ipv6=no + AC_TRY_COMPILE([ + #include <sys/types.h> + #include <sys/socket.h> + ], [ + struct sockaddr_storage ss; + socket(AF_INET6, SOCK_STREAM, 0) + ], + have_ipv6=yes, + have_ipv6=no + ) + AC_MSG_RESULT($have_ipv6) + + if test $have_ipv6 = yes; then + AC_DEFINE([SUPPORT_IP6], [], [Support for IPv6]) + have_broken_ss_family=no + + dnl ********************************************************************* + dnl on some platforms (like AIX 5L), the structure sockaddr doesn't have + dnl a ss_family member, but rather __ss_family. Let's detect that + dnl and define the HAVE_BROKEN_SS_FAMILY when we are on one of these + dnl platforms. However, we should only do this if ss_family is not + dnl present. + dnl ******************************************************************** + AC_MSG_CHECKING([struct sockaddr::ss_family]) + AC_TRY_COMPILE([ + #include <sys/types.h> + #include <sys/socket.h> + ], [ + struct sockaddr_storage ss ; + ss.ss_family = 0 ; + ], + have_ss_family=yes, + have_ss_family=no + ) + AC_MSG_RESULT($have_ss_family) + if test x$have_ss_family = xno ; then + AC_MSG_CHECKING([broken struct sockaddr::ss_family]) + AC_TRY_COMPILE([ + #include <sys/types.h> + #include <sys/socket.h> + ], [ + struct sockaddr_storage ss ; + ss.__ss_family = 0 ; + ], + have_broken_ss_family=yes, + have_broken_ss_family=no + ) + AC_MSG_RESULT($have_broken_ss_family) + if test x$have_broken_ss_family = xyes ; then + AC_DEFINE(HAVE_BROKEN_SS_FAMILY, [], + [Whether struct sockaddr::__ss_family exists]) + AC_DEFINE(ss_family, __ss_family, + [ss_family is not defined here, use __ss_family instead]) + else + AC_MSG_WARN(ss_family and __ss_family not found) + fi + fi + + have_getaddrinfo=no + AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes) + if test $have_getaddrinfo != yes; then + for lib in bsd socket inet; do + AC_CHECK_LIB($lib, getaddrinfo, [LIBS="$LIBS -l$lib";have_getaddrinfo=yes;break]) + done + fi + + if test $have_getaddrinfo = yes; then + AC_DEFINE([HAVE_GETADDRINFO], [], [Define if getaddrinfo is there]) + fi + fi +fi + +dnl ******************************End IPv6 checks****************************** + +dnl Checks for isnan in libm if not in libc +AC_CHECK_FUNC(isnan, AC_DEFINE([HAVE_ISNAN],[], [Define if isnan is there]) , AC_CHECK_LIB(m, isnan, + [AC_DEFINE([HAVE_ISNAN],[], [Define if isnan is there])])) + +AC_CHECK_FUNC(isinf, AC_DEFINE([HAVE_ISINF], [], [Define if isinf is there]) , AC_CHECK_LIB(m, isinf, + [AC_DEFINE([HAVE_ISINF], [], [Define if isinf is there])])) + +XML_LIBDIR='-L${libdir}' +XML_INCLUDEDIR='-I${includedir}/libxml2' + +dnl +dnl Extra flags +dnl +XML_CFLAGS="" +RDL_LIBS="" + +dnl +dnl Workaround for native compilers +dnl HP : http://bugs.gnome.org/db/31/3163.html +dnl DEC : Enable NaN/Inf +dnl +if test "${GCC}" != "yes" ; then + case "${host}" in + hppa*-*-hpux* ) + CFLAGS="${CFLAGS} -Wp,-H30000" + ;; + *-dec-osf* ) + CFLAGS="${CFLAGS} -ieee" + ;; + alpha*-*-linux* ) + CFLAGS="${CFLAGS} -ieee" + ;; + esac +else + if test "$with_fexceptions" = "yes" + then + # + # Not activated by default because this inflates the code size + # Used to allow propagation of C++ exceptions through the library + # + CFLAGS="${CFLAGS} -fexceptions" + fi + + CFLAGS="${CFLAGS} -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls" + case "${host}" in + alpha*-*-linux* ) + CFLAGS="${CFLAGS} -mieee" + ;; + alpha*-*-osf* ) + CFLAGS="${CFLAGS} -mieee" + ;; + esac +fi +case ${host} in + *-*-solaris*) + XML_LIBDIR="${XML_LIBDIR} -R${libdir}" + ;; + hppa*-hp-mpeix) + NEED_TRIO=1 + ;; + *-*-mingw* | *-*-cygwin* | *-*-msvc* ) + # If the host is Windows, and shared libraries are disabled, we + # need to add -DLIBXML_STATIC to CFLAGS in order for linking to + # work properly (without it, xmlexports.h would force the use of + # DLL imports, which obviously aren't present in a static + # library). + if test "x$enable_shared" = "xno"; then + XML_CFLAGS="$XML_CFLAGS -DLIBXML_STATIC" + CFLAGS="$CFLAGS -DLIBXML_STATIC" + fi + ;; +esac + + +dnl +dnl check for python +dnl + +PYTHON_VERSION= +PYTHON_INCLUDES= +PYTHON_SITE_PACKAGES= +PYTHON_TESTS= +pythondir= +if test "$with_python" != "no" ; then + if test -x "$with_python/bin/python" + then + echo Found python in $with_python/bin/python + PYTHON="$with_python/bin/python" + else + if test -x "$with_python" + then + echo Found python in $with_python + PYTHON="$with_python" + else + if test -x "$PYTHON" + then + echo Found python in environment PYTHON=$PYTHON + with_python=`$PYTHON -c "import sys; print sys.exec_prefix"` + else + AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5) + fi + fi + fi + if test "$PYTHON" != "" + then + PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"` + echo Found Python version $PYTHON_VERSION + fi + if test "$PYTHON_VERSION" != "" + then + if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \ + -d $with_python/lib/python$PYTHON_VERSION/site-packages + then + PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION + PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages + else + if test -r $prefix/include/python$PYTHON_VERSION/Python.h + then + PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION + PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages + else + if test -r /usr/include/python$PYTHON_VERSION/Python.h + then + PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION + PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages + else + echo could not find python$PYTHON_VERSION/Python.h + fi + fi + if test ! -d "$PYTHON_SITE_PACKAGES" + then + PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"` + fi + fi + PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags` + fi + if test "$with_python" != "" + then + pythondir='$(PYTHON_SITE_PACKAGES)' + else + pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages' + fi +else + PYTHON= +fi +AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "") +if test "$PYTHON_INCLUDES" != "" +then + PYTHON_SUBDIR=python +else + PYTHON_SUBDIR= +fi +AC_SUBST(pythondir) +AC_SUBST(PYTHON_SUBDIR) +AC_SUBST(PYTHON_LIBS) + +dnl check for dso support +WITH_MODULES=0 +TEST_MODULES= + +if test "$with_modules" != "no" ; then + case "$host" in + *-*-cygwin*) + MODULE_EXTENSION=".dll" + AC_CHECK_LIB(cygwin, dlopen, [ + WITH_MODULES=1 + MODULE_PLATFORM_LIBS= + AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso]) + ]) + ;; + *-*-mingw*) + MODULE_EXTENSION=".dll" + WITH_MODULES=1 + ;; + *) + AC_CHECK_FUNC(shl_load, libxml_have_shl_load=yes, [ + AC_CHECK_LIB(dld, shl_load, [ + MODULE_PLATFORM_LIBS="-ldld" + libxml_have_shl_load=yes], [ + AC_CHECK_FUNC(dlopen, libxml_have_dlopen=yes, [ + AC_CHECK_LIB(dl, dlopen, [ + MODULE_PLATFORM_LIBS="-ldl" + libxml_have_dlopen=yes])])])]) + + if test "${libxml_have_shl_load}" = "yes"; then + MODULE_EXTENSION=".sl" + WITH_MODULES=1 + AC_DEFINE([HAVE_SHLLOAD], [], [Have shl_load based dso]) + fi + + if test "${libxml_have_dlopen}" = "yes"; then + case "${host}" in + *-*-hpux* ) + MODULE_EXTENSION=".sl" + ;; + * ) + MODULE_EXTENSION=".so" + ;; + esac + + WITH_MODULES=1 + AC_DEFINE([HAVE_DLOPEN], [], [Have dlopen based dso]) + fi + ;; + esac +fi + +if test "${WITH_MODULES}" = "1"; then + TEST_MODULES="ModuleTests" +fi + +AC_SUBST(WITH_MODULES) +AC_SUBST(MODULE_PLATFORM_LIBS) +AC_SUBST(MODULE_EXTENSION) +AC_SUBST(TEST_MODULES) + +dnl +dnl Tester makes use of readline if present +dnl + +dnl +dnl specific tests to setup DV and Bill's devel environments with debug etc ... +dnl (-Wunreachable-code) +dnl +if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/XML" ]] || \ + [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/home/veillard/libxml2" ]] || \ + [[ "${LOGNAME}" = "bill" -a "`pwd`" = "/home/bill/gnomesvn/libxml2" ]] + then + if test "$with_minimum" != "yes" + then + if test "${with_mem_debug}" = "" ; then + echo Activating memory debugging + with_mem_debug="yes" + with_run_debug="yes" + fi + if test "${with_docbook}" = "" ; then + with_docbook="yes" + fi + fi + if test "${GCC}" = "yes" ; then + CFLAGS="-g -O -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -Wall" + fi + STATIC_BINARIES="-static" +dnl -Wcast-qual -ansi +else + STATIC_BINARIES= +fi +AC_SUBST(STATIC_BINARIES) + +dnl +dnl Check for trio string functions +dnl + +if test "${NEED_TRIO}" = "1" ; then + echo Adding trio library for string functions + WITH_TRIO=1 +else + WITH_TRIO=0 +fi +AM_CONDITIONAL(WITH_TRIO_SOURCES, test "${NEED_TRIO}" = "1") +AC_SUBST(WITH_TRIO) + +dnl +dnl Allow to enable/disable various pieces +dnl +echo Checking configuration requirements + +dnl +dnl Thread-related stuff +dnl +THREAD_LIBS="" +BASE_THREAD_LIBS="" +WITH_THREADS=0 +THREAD_CFLAGS="" +TEST_THREADS="" +THREADS_W32="" + +if test "$with_threads" = "no" ; then + echo Disabling multithreaded support +else + echo Enabling multithreaded support + dnl Use pthread by default + if test "$with_threads" = "pthread" || test "$with_threads" = "" || test "$with_threads" = "yes" ; then + AC_CHECK_HEADER(pthread.h, + AC_CHECK_LIB(pthread, pthread_join,[ + THREAD_LIBS="-lpthread" + AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)]) + AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there]) + WITH_THREADS="1"])) + fi + case $host_os in + *mingw32*) if test "$THREAD_LIBS" != "-lpthread"; then + WITH_THREADS="1" + THREADS_W32="Win32" + THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_WIN32_THREADS" + fi + ;; + *cygwin*) THREAD_LIBS="" + ;; + *beos*) WITH_THREADS="1" + THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS" + ;; + *linux*) + if test "${GCC}" = "yes" ; then + GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'` + GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'` + GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[[0-9]]*\.++' | sed 's+\..*++'` + if test "${THREAD_LIBS}" = "-lpthread" ; then + if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + if expr ${GCC_MAJOR} \> 3 > /dev/null + then + THREAD_LIBS="" + BASE_THREAD_LIBS="-lpthread" + else + echo old GCC disabling weak symbols for pthread + fi + fi + fi + fi + ;; + esac + if test "$WITH_THREADS" = "1" ; then + THREAD_CFLAGS="$THREAD_CFLAGS -D_REENTRANT" + TEST_THREADS="Threadtests" + fi +fi +if test "$with_thread_alloc" = "yes" -a "$WITH_THREADS" = "1" ; then + THREAD_CFLAGS="$THREAD_CFLAGS -DLIBXML_THREAD_ALLOC_ENABLED" +fi + +AC_SUBST(THREAD_LIBS) +AC_SUBST(BASE_THREAD_LIBS) +AC_SUBST(WITH_THREADS) +AC_SUBST(THREAD_CFLAGS) +AC_SUBST(TEST_THREADS) +AC_SUBST(THREADS_W32) + +dnl +dnl xmllint shell history +dnl +if test "$with_history" = "yes" ; then + echo Enabling xmllint shell history + dnl check for terminal library. this is a very cool solution + dnl from octave's configure.in + unset tcap + for termlib in ncurses curses termcap terminfo termlib; do + AC_CHECK_LIB(${termlib}, tputs, [tcap="-l$termlib"]) + test -n "$tcap" && break + done + + AC_CHECK_HEADER(readline/history.h, + AC_CHECK_LIB(history, append_history,[ + RDL_LIBS="-lhistory" + AC_DEFINE([HAVE_LIBHISTORY], [], [Define if history library is there (-lhistory)])])) + AC_CHECK_HEADER(readline/readline.h, + AC_CHECK_LIB(readline, readline,[ + RDL_LIBS="-lreadline $RDL_LIBS $tcap" + AC_DEFINE([HAVE_LIBREADLINE], [], [Define if readline library is there (-lreadline)])], , $tcap)) + if test -n "$RDL_DIR" -a -n "$RDL_LIBS"; then + CPPFLAGS="$CPPFLAGS -I${RDL_DIR}/include" + RDL_LIBS="-L${RDL_DIR}/lib $RDL_LIBS" + fi +fi + +dnl +dnl Tree functions +dnl +if test "$with_tree" = "no" ; then + echo Disabling DOM like tree manipulation APIs + WITH_TREE=0 +else + WITH_TREE=1 +fi +AC_SUBST(WITH_TREE) + +if test "$with_ftp" = "no" ; then + echo Disabling FTP support + WITH_FTP=0 + FTP_OBJ= +else + WITH_FTP=1 + FTP_OBJ=nanoftp.o +fi +AC_SUBST(WITH_FTP) +AC_SUBST(FTP_OBJ) + +if test "$with_http" = "no" ; then + echo Disabling HTTP support + WITH_HTTP=0 + HTTP_OBJ= +else + WITH_HTTP=1 + HTTP_OBJ=nanohttp.o +fi +AC_SUBST(WITH_HTTP) +AC_SUBST(HTTP_OBJ) + +if test "$with_legacy" = "no" ; then + echo Disabling deprecated APIs + WITH_LEGACY=0 +else + WITH_LEGACY=1 +fi +AC_SUBST(WITH_LEGACY) + +if test "$with_reader" = "no" ; then + echo Disabling the xmlReader parsing interface + WITH_READER=0 + READER_TEST= +else + WITH_READER=1 + READER_TEST=Readertests + if test "$with_push" = "no" ; then + echo xmlReader requires Push interface - enabling it + with_push=yes + fi +fi +AC_SUBST(WITH_READER) +AC_SUBST(READER_TEST) + +if test "$with_writer" = "no" ; then + echo Disabling the xmlWriter saving interface + WITH_WRITER=0 +# WRITER_TEST= +else + WITH_WRITER=1 +# WRITER_TEST=Writertests + if test "$with_push" = "no" ; then + echo xmlWriter requires Push interface - enabling it + with_push=yes + fi + if test "$with_output" = "no" ; then + echo xmlWriter requires Output interface - enabling it + with_output=yes + fi +fi +AC_SUBST(WITH_WRITER) +#AC_SUBST(WRITER_TEST) + +if test "$with_pattern" = "no" ; then + echo Disabling the xmlPattern parsing interface + WITH_PATTERN=0 + TEST_PATTERN= +else + WITH_PATTERN=1 + TEST_PATTERN=Patterntests +fi +AC_SUBST(WITH_PATTERN) +AC_SUBST(TEST_PATTERN) + +if test "$with_sax1" = "no" ; then + echo Disabling the older SAX1 interface + WITH_SAX1=0 + TEST_SAX= +else + WITH_SAX1=1 + TEST_SAX=SAXtests +fi +AC_SUBST(WITH_SAX1) +AC_SUBST(TEST_SAX) + +if test "$with_push" = "no" ; then + echo Disabling the PUSH parser interfaces + WITH_PUSH=0 + TEST_PUSH= +else + WITH_PUSH=1 + TEST_PUSH="XMLPushtests" +fi +AC_SUBST(WITH_PUSH) +AC_SUBST(TEST_PUSH) + +if test "$with_html" = "no" ; then + echo Disabling HTML support + WITH_HTML=0 + HTML_OBJ= + TEST_HTML= +else + WITH_HTML=1 + HTML_OBJ="HTMLparser.o HTMLtree.o" + TEST_HTML=HTMLtests + if test "$with_push" != "no" ; then + TEST_PHTML=HTMLPushtests + else + TEST_PHTML= + fi +fi +AC_SUBST(WITH_HTML) +AC_SUBST(HTML_OBJ) +AC_SUBST(TEST_HTML) +AC_SUBST(TEST_PHTML) + +if test "$with_valid" = "no" ; then + echo Disabling DTD validation support + WITH_VALID=0 + TEST_VALID= + TEST_VTIME= +else + WITH_VALID=1 + TEST_VALID=Validtests + TEST_VTIME=VTimingtests +fi +AC_SUBST(WITH_VALID) +AC_SUBST(TEST_VALID) +AC_SUBST(TEST_VTIME) + +if test "$with_catalog" = "no" ; then + echo Disabling Catalog support + WITH_CATALOG=0 + CATALOG_OBJ= + TEST_CATALOG= +else + WITH_CATALOG=1 + CATALOG_OBJ="catalog.o" + TEST_CATALOG=Catatests +fi +AC_SUBST(WITH_CATALOG) +AC_SUBST(CATALOG_OBJ) +AC_SUBST(TEST_CATALOG) + +if test "$with_docbook" = "no" ; then + echo Disabling Docbook support + WITH_DOCB=0 + DOCB_OBJ= +else + WITH_DOCB=1 + DOCB_OBJ="DOCBparser.o" +fi +AC_SUBST(WITH_DOCB) +AC_SUBST(DOCB_OBJ) + + +if test "$with_xptr" = "no" ; then + echo Disabling XPointer support + WITH_XPTR=0 + XPTR_OBJ= + TEST_XPTR= +else + WITH_XPTR=1 + XPTR_OBJ=xpointer.o + TEST_XPTR=XPtrtests + if test "$with_xpath" = "no" ; then + echo XPointer requires XPath support - enabling it + with_xpath=yes + fi +fi +AC_SUBST(WITH_XPTR) +AC_SUBST(XPTR_OBJ) +AC_SUBST(TEST_XPTR) + +if test "$with_c14n" = "no" ; then + echo Disabling C14N support + WITH_C14N=0 + C14N_OBJ= + TEST_C14N= +else + WITH_C14N=1 + C14N_OBJ="c14n.c" + TEST_C14N=C14Ntests + if test "$with_xpath" = "no" ; then + echo C14N requires XPath support - enabling it + with_xpath=yes + fi +fi +AC_SUBST(WITH_C14N) +AC_SUBST(C14N_OBJ) +AC_SUBST(TEST_C14N) + +if test "$with_xinclude" = "no" ; then + echo Disabling XInclude support + WITH_XINCLUDE=0 + XINCLUDE_OBJ= + with_xinclude="no" + TEST_XINCLUDE= +else + WITH_XINCLUDE=1 + XINCLUDE_OBJ=xinclude.o + TEST_XINCLUDE=XIncludetests + if test "$with_xpath" = "no" ; then + echo XInclude requires XPath support - enabling it + with_xpath=yes + fi +fi +AC_SUBST(WITH_XINCLUDE) +AC_SUBST(XINCLUDE_OBJ) +AC_SUBST(TEST_XINCLUDE) + +if test "$with_xpath" = "no" ; then + echo Disabling XPATH support + WITH_XPATH=0 + XPATH_OBJ= + TEST_XPATH= +else + WITH_XPATH=1 + XPATH_OBJ=xpath.o + TEST_XPATH=XPathtests +fi +AC_SUBST(WITH_XPATH) +AC_SUBST(XPATH_OBJ) +AC_SUBST(TEST_XPATH) + +dnl +dnl output functions +dnl +if test "$with_output" = "no" ; then + echo Disabling serialization/saving support + WITH_OUTPUT=0 +else + WITH_OUTPUT=1 +fi +AC_SUBST(WITH_OUTPUT) + +WITH_ICONV=0 +if test "$with_iconv" = "no" ; then + echo Disabling ICONV support +else + if test "$with_iconv" != "yes" -a "$with_iconv" != "" ; then + CPPFLAGS="${CPPFLAGS} -I$with_iconv/include" + # Export this since our headers include iconv.h + XML_INCLUDEDIR="${XML_INCLUDEDIR} -I$with_iconv/include" + ICONV_LIBS="-L$with_iconv/lib" + fi + + AC_CHECK_HEADER(iconv.h, + AC_MSG_CHECKING(for iconv) + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>],[ +iconv_t cd = iconv_open ("",""); +iconv (cd, NULL, NULL, NULL, NULL);],[ + AC_MSG_RESULT(yes) + WITH_ICONV=1],[ + AC_MSG_RESULT(no) + AC_MSG_CHECKING(for iconv in -liconv) + + _ldflags="${LDFLAGS}" + _libs="${LIBS}" + LDFLAGS="${LDFLAGS} ${ICONV_LIBS}" + LIBS="${LIBS} -liconv" + + AC_TRY_LINK([#include <stdlib.h> +#include <iconv.h>],[ +iconv_t cd = iconv_open ("",""); +iconv (cd, NULL, NULL, NULL, NULL);],[ + AC_MSG_RESULT(yes) + WITH_ICONV=1 + ICONV_LIBS="${ICONV_LIBS} -liconv" + LIBS="${_libs}" + LDFLAGS="${_ldflags}"],[ + AC_MSG_RESULT(no) + LIBS="${_libs}" + LDFLAGS="${_ldflags}"])])) + + if test "$WITH_ICONV" = "1" ; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(xml_cv_iconv_arg2, [ + AC_TRY_COMPILE([#include <stdlib.h> +#include <iconv.h> +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], xml_cv_iconv_arg2="", xml_cv_iconv_arg2="const")]) + + xml_cv_iconv_decl="extern size_t iconv (iconv_t cd, $xml_cv_iconv_arg2 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" + AC_MSG_RESULT([${xml_xxx:- + }$xml_cv_iconv_decl]) + AC_DEFINE_UNQUOTED(ICONV_CONST, $xml_cv_iconv_arg2, + [Define as const if the declaration of iconv() needs const.]) + fi +fi +case "$host" in + *mingw*) M_LIBS="" + ;; + *beos*) M_LIBS="" + ;; + *haiku*) M_LIBS="" + ;; + *) M_LIBS="-lm" + ;; +esac +XML_LIBS="-lxml2 $Z_LIBS $THREAD_LIBS $ICONV_LIBS $M_LIBS $LIBS" +XML_LIBTOOLLIBS="libxml2.la" +AC_SUBST(WITH_ICONV) + +WITH_ISO8859X=1 +if test "$WITH_ICONV" != "1" ; then +if test "$with_iso8859x" = "no" ; then + echo Disabling ISO8859X support + WITH_ISO8859X=0 +fi +fi +AC_SUBST(WITH_ISO8859X) + +if test "$with_schematron" = "no" ; then + echo "Disabling Schematron support" + WITH_SCHEMATRON=0 + TEST_SCHEMATRON= +else + echo "Enabled Schematron support" + WITH_SCHEMATRON=1 + TEST_SCHEMATRON="Schematrontests" + with_xpath=yes + with_pattern=yes +fi +AC_SUBST(WITH_SCHEMATRON) +AC_SUBST(TEST_SCHEMATRON) + +if test "$with_schemas" = "no" ; then + echo "Disabling Schemas/Relax-NG support" + WITH_SCHEMAS=0 + TEST_SCHEMAS= +else + echo "Enabled Schemas/Relax-NG support" + WITH_SCHEMAS=1 + TEST_SCHEMAS="Schemastests Relaxtests" + if test "$PYTHON_INCLUDES" != "" ; then + PYTHON_TESTS="$PYTHON_TESTS RelaxNGPythonTests SchemasPythonTests" + fi + with_regexps=yes +fi +AC_SUBST(WITH_SCHEMAS) +AC_SUBST(TEST_SCHEMAS) + +if test "$with_regexps" = "no" ; then + echo Disabling Regexps support + WITH_REGEXPS=0 + TEST_REGEXPS= +else + WITH_REGEXPS=1 + TEST_REGEXPS="Regexptests Automatatests" +fi +AC_SUBST(WITH_REGEXPS) +AC_SUBST(TEST_REGEXPS) + +if test "$with_debug" = "no" ; then + echo Disabling DEBUG support + WITH_DEBUG=0 + DEBUG_OBJ= + TEST_DEBUG= +else + WITH_DEBUG=1 + DEBUG_OBJ=debugXML.o + TEST_DEBUG=Scripttests +fi +AC_SUBST(WITH_DEBUG) +AC_SUBST(DEBUG_OBJ) +AC_SUBST(TEST_DEBUG) + +if test "$with_mem_debug" = "yes" ; then + if test "$with_thread_alloc" = "yes" ; then + echo Disabling memory debug - cannot use mem-debug with thread-alloc! + WITH_MEM_DEBUG=0 + else + echo Enabling memory debug support + WITH_MEM_DEBUG=1 + fi +else + WITH_MEM_DEBUG=0 +fi +AC_SUBST(WITH_MEM_DEBUG) + +if test "$with_run_debug" = "yes" ; then + echo Enabling runtime debug support + WITH_RUN_DEBUG=1 +else + WITH_RUN_DEBUG=0 +fi +AC_SUBST(WITH_RUN_DEBUG) + +WIN32_EXTRA_LIBADD= +WIN32_EXTRA_LDFLAGS= +CYGWIN_EXTRA_LDFLAGS= +CYGWIN_EXTRA_PYTHON_LIBADD= +case "$host" in + *-*-mingw*) + CPPFLAGS="$CPPFLAGS -DWIN32" + WIN32_EXTRA_LIBADD="-lws2_32" + WIN32_EXTRA_LDFLAGS="-no-undefined" + AC_DEFINE([_WINSOCKAPI_],1,[Using the Win32 Socket implementation]) + AC_DEFINE([snprintf],[_snprintf],[Win32 Std C name mangling work-around]) + AC_DEFINE([vsnprintf],[_vsnprintf],[Win32 Std C name mangling work-around]) + ;; + *-*-cygwin*) + CYGWIN_EXTRA_LDFLAGS="-no-undefined" + if test "${PYTHON}" != "" + then + CYGWIN_EXTRA_PYTHON_LIBADD="-L/usr/lib/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}" + fi + ;; +esac +AC_SUBST(WIN32_EXTRA_LIBADD) +AC_SUBST(WIN32_EXTRA_LDFLAGS) +AC_SUBST(CYGWIN_EXTRA_LDFLAGS) +AC_SUBST(CYGWIN_EXTRA_PYTHON_LIBADD) + +if test "$with_coverage" = "yes" -a "${GCC}" = "yes" +then + echo Enabling code coverage for GCC + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage" + LDFLAGS="$LDFLAGS -fprofile-arcs -ftest-coverage" +else + echo Disabling code coverage for GCC +fi + +AC_SUBST(CPPFLAGS) +AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(XML_CFLAGS) + +AC_SUBST(XML_LIBDIR) +AC_SUBST(XML_LIBS) +AC_SUBST(XML_LIBTOOLLIBS) +AC_SUBST(ICONV_LIBS) +AC_SUBST(XML_INCLUDEDIR) +AC_SUBST(HTML_DIR) +AC_SUBST(HAVE_ISNAN) +AC_SUBST(HAVE_ISINF) +AC_SUBST(PYTHON) +AC_SUBST(PYTHON_VERSION) +AC_SUBST(PYTHON_INCLUDES) +AC_SUBST(PYTHON_SITE_PACKAGES) + +AC_SUBST(M_LIBS) +AC_SUBST(RDL_LIBS) + +dnl for the spec file +RELDATE=`date +'%a %b %e %Y'` +AC_SUBST(RELDATE) +AC_SUBST(PYTHON_TESTS) + +rm -f COPYING.LIB COPYING +ln -s Copyright COPYING + +# keep on one line for cygwin c.f. #130896 +AC_OUTPUT(libxml2.spec:libxml.spec.in Makefile include/Makefile include/libxml/Makefile doc/Makefile doc/examples/Makefile doc/devhelp/Makefile example/Makefile python/Makefile python/tests/Makefile xstc/Makefile include/libxml/xmlversion.h xml2-config libxml-2.0.pc libxml-2.0-uninstalled.pc python/setup.py) + +chmod +x xml2-config python/setup.py +echo Done configuring
diff --git a/libxml2-2.7.7/dbgen.pl b/libxml2-2.7.7/dbgen.pl new file mode 100755 index 0000000..1383d6e --- /dev/null +++ b/libxml2-2.7.7/dbgen.pl
@@ -0,0 +1,43 @@ +#!/usr/bin/perl + +$size = shift; + +if ($size eq "") +{ + die "usage: dbgen.pl [size]\n"; +} + +@firstnames = ("Al", "Bob", "Charles", "David", "Egon", "Farbood", + "George", "Hank", "Inki", "James"); +@lastnames = ("Aranow", "Barker", "Corsetti", "Dershowitz", "Engleman", + "Franklin", "Grice", "Haverford", "Ilvedson", "Jones"); +@states = ("AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", + "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", + "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", + "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", + "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"); + +print "<?xml version=\"1.0\"?>\n"; +print "\n"; +print "<table>\n"; + +for ($i=0; $i<$size; $i++) +{ + $first = $firstnames [$i % 10]; + $last = $lastnames [($i / 10) % 10]; + $state = $states [($i / 100) % 50]; + $zip = 22000 + $i / 5000; + + printf " <row>\n"; + printf " <id>%04d</id>\n", $i; + printf " <firstname>$first</firstname>\n", $i; + printf " <lastname>$last</lastname>\n", $i; + printf " <street>%d Any St.</street>\n", ($i % 100) + 1; + printf " <city>Anytown</city>\n"; + printf " <state>$state</state>\n"; + printf " <zip>%d</zip>\n", $zip; + printf " </row>\n"; +} + +print "</table>\n"; +
diff --git a/libxml2-2.7.7/dbgenattr.pl b/libxml2-2.7.7/dbgenattr.pl new file mode 100755 index 0000000..dce11cd --- /dev/null +++ b/libxml2-2.7.7/dbgenattr.pl
@@ -0,0 +1,42 @@ +#!/usr/bin/perl + +$size = shift; + +if ($size eq "") +{ + die "usage: dbgen.pl [size]\n"; +} + +@firstnames = ("Al", "Bob", "Charles", "David", "Egon", "Farbood", + "George", "Hank", "Inki", "James"); +@lastnames = ("Aranow", "Barker", "Corsetti", "Dershowitz", "Engleman", + "Franklin", "Grice", "Haverford", "Ilvedson", "Jones"); +@states = ("AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", + "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", + "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", + "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", + "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"); + +print "<?xml version=\"1.0\"?>\n"; +print "\n"; +print "<table>\n"; + +for ($i=0; $i<$size; $i++) +{ + $first = $firstnames [$i % 10]; + $last = $lastnames [($i / 10) % 10]; + $state = $states [($i / 100) % 50]; + $zip = 22000 + $i / 5000; + + printf " <row\n"; + printf " id='%04d'\n", $i; + printf " firstname='$first'\n", $i; + printf " lastname='$last'\n", $i; + printf " street='%d Any St.'\n", ($i % 100) + 1; + printf " city='Anytown'\n"; + printf " state='$state'\n"; + printf " zip='%d'/>\n", $zip; +} + +print "</table>\n"; +
diff --git a/libxml2-2.7.7/debugXML.c b/libxml2-2.7.7/debugXML.c new file mode 100644 index 0000000..415889a --- /dev/null +++ b/libxml2-2.7.7/debugXML.c
@@ -0,0 +1,3263 @@ +/* + * debugXML.c : This is a set of routines used for debugging the tree + * produced by the XML parser. + * + * See Copyright for the status of this software. + * + * Daniel Veillard <daniel@veillard.com> + */ + +#define IN_LIBXML +#include "libxml.h" +#ifdef LIBXML_DEBUG_ENABLED + +#include <string.h> +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#ifdef HAVE_STRING_H +#include <string.h> +#endif +#include <libxml/xmlmemory.h> +#include <libxml/tree.h> +#include <libxml/parser.h> +#include <libxml/parserInternals.h> +#include <libxml/valid.h> +#include <libxml/debugXML.h> +#include <libxml/HTMLtree.h> +#include <libxml/HTMLparser.h> +#include <libxml/xmlerror.h> +#include <libxml/globals.h> +#include <libxml/xpathInternals.h> +#include <libxml/uri.h> +#ifdef LIBXML_SCHEMAS_ENABLED +#include <libxml/relaxng.h> +#endif + +#define DUMP_TEXT_TYPE 1 + +typedef struct _xmlDebugCtxt xmlDebugCtxt; +typedef xmlDebugCtxt *xmlDebugCtxtPtr; +struct _xmlDebugCtxt { + FILE *output; /* the output file */ + char shift[101]; /* used for indenting */ + int depth; /* current depth */ + xmlDocPtr doc; /* current document */ + xmlNodePtr node; /* current node */ + xmlDictPtr dict; /* the doc dictionnary */ + int check; /* do just checkings */ + int errors; /* number of errors found */ + int nodict; /* if the document has no dictionnary */ + int options; /* options */ +}; + +static void xmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node); + +static void +xmlCtxtDumpInitCtxt(xmlDebugCtxtPtr ctxt) +{ + int i; + + ctxt->depth = 0; + ctxt->check = 0; + ctxt->errors = 0; + ctxt->output = stdout; + ctxt->doc = NULL; + ctxt->node = NULL; + ctxt->dict = NULL; + ctxt->nodict = 0; + ctxt->options = 0; + for (i = 0; i < 100; i++) + ctxt->shift[i] = ' '; + ctxt->shift[100] = 0; +} + +static void +xmlCtxtDumpCleanCtxt(xmlDebugCtxtPtr ctxt ATTRIBUTE_UNUSED) +{ + /* remove the ATTRIBUTE_UNUSED when this is added */ +} + +/** + * xmlNsCheckScope: + * @node: the node + * @ns: the namespace node + * + * Check that a given namespace is in scope on a node. + * + * Returns 1 if in scope, -1 in case of argument error, + * -2 if the namespace is not in scope, and -3 if not on + * an ancestor node. + */ +static int +xmlNsCheckScope(xmlNodePtr node, xmlNsPtr ns) +{ + xmlNsPtr cur; + + if ((node == NULL) || (ns == NULL)) + return(-1); + + if ((node->type != XML_ELEMENT_NODE) && + (node->type != XML_ATTRIBUTE_NODE) && + (node->type != XML_DOCUMENT_NODE) && + (node->type != XML_TEXT_NODE) && + (node->type != XML_HTML_DOCUMENT_NODE) && + (node->type != XML_XINCLUDE_START)) + return(-2); + + while ((node != NULL) && + ((node->type == XML_ELEMENT_NODE) || + (node->type == XML_ATTRIBUTE_NODE) || + (node->type == XML_TEXT_NODE) || + (node->type == XML_XINCLUDE_START))) { + if ((node->type == XML_ELEMENT_NODE) || + (node->type == XML_XINCLUDE_START)) { + cur = node->nsDef; + while (cur != NULL) { + if (cur == ns) + return(1); + if (xmlStrEqual(cur->prefix, ns->prefix)) + return(-2); + cur = cur->next; + } + } + node = node->parent; + } + /* the xml namespace may be declared on the document node */ + if ((node != NULL) && + ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE))) { + xmlNsPtr oldNs = ((xmlDocPtr) node)->oldNs; + if (oldNs == ns) + return(1); + } + return(-3); +} + +static void +xmlCtxtDumpSpaces(xmlDebugCtxtPtr ctxt) +{ + if (ctxt->check) + return; + if ((ctxt->output != NULL) && (ctxt->depth > 0)) { + if (ctxt->depth < 50) + fprintf(ctxt->output, "%s", &ctxt->shift[100 - 2 * ctxt->depth]); + else + fprintf(ctxt->output, "%s", ctxt->shift); + } +} + +/** + * xmlDebugErr: + * @ctxt: a debug context + * @error: the error code + * + * Handle a debug error. + */ +static void +xmlDebugErr(xmlDebugCtxtPtr ctxt, int error, const char *msg) +{ + ctxt->errors++; + __xmlRaiseError(NULL, NULL, NULL, + NULL, ctxt->node, XML_FROM_CHECK, + error, XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, + "%s", msg); +} +static void +xmlDebugErr2(xmlDebugCtxtPtr ctxt, int error, const char *msg, int extra) +{ + ctxt->errors++; + __xmlRaiseError(NULL, NULL, NULL, + NULL, ctxt->node, XML_FROM_CHECK, + error, XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, + msg, extra); +} +static void +xmlDebugErr3(xmlDebugCtxtPtr ctxt, int error, const char *msg, const char *extra) +{ + ctxt->errors++; + __xmlRaiseError(NULL, NULL, NULL, + NULL, ctxt->node, XML_FROM_CHECK, + error, XML_ERR_ERROR, NULL, 0, + NULL, NULL, NULL, 0, 0, + msg, extra); +} + +/** + * xmlCtxtNsCheckScope: + * @ctxt: the debugging context + * @node: the node + * @ns: the namespace node + * + * Report if a given namespace is is not in scope. + */ +static void +xmlCtxtNsCheckScope(xmlDebugCtxtPtr ctxt, xmlNodePtr node, xmlNsPtr ns) +{ + int ret; + + ret = xmlNsCheckScope(node, ns); + if (ret == -2) { + if (ns->prefix == NULL) + xmlDebugErr(ctxt, XML_CHECK_NS_SCOPE, + "Reference to default namespace not in scope\n"); + else + xmlDebugErr3(ctxt, XML_CHECK_NS_SCOPE, + "Reference to namespace '%s' not in scope\n", + (char *) ns->prefix); + } + if (ret == -3) { + if (ns->prefix == NULL) + xmlDebugErr(ctxt, XML_CHECK_NS_ANCESTOR, + "Reference to default namespace not on ancestor\n"); + else + xmlDebugErr3(ctxt, XML_CHECK_NS_ANCESTOR, + "Reference to namespace '%s' not on ancestor\n", + (char *) ns->prefix); + } +} + +/** + * xmlCtxtCheckString: + * @ctxt: the debug context + * @str: the string + * + * Do debugging on the string, currently it just checks the UTF-8 content + */ +static void +xmlCtxtCheckString(xmlDebugCtxtPtr ctxt, const xmlChar * str) +{ + if (str == NULL) return; + if (ctxt->check) { + if (!xmlCheckUTF8(str)) { + xmlDebugErr3(ctxt, XML_CHECK_NOT_UTF8, + "String is not UTF-8 %s", (const char *) str); + } + } +} + +/** + * xmlCtxtCheckName: + * @ctxt: the debug context + * @name: the name + * + * Do debugging on the name, for example the dictionnary status and + * conformance to the Name production. + */ +static void +xmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name) +{ + if (ctxt->check) { + if (name == NULL) { + xmlDebugErr(ctxt, XML_CHECK_NO_NAME, "Name is NULL"); + return; + } + if (xmlValidateName(name, 0)) { + xmlDebugErr3(ctxt, XML_CHECK_NOT_NCNAME, + "Name is not an NCName '%s'", (const char *) name); + } + if ((ctxt->dict != NULL) && + (!xmlDictOwns(ctxt->dict, name)) && + ((ctxt->doc == NULL) || + ((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) { + xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT, + "Name is not from the document dictionnary '%s'", + (const char *) name); + } + } +} + +static void +xmlCtxtGenericNodeCheck(xmlDebugCtxtPtr ctxt, xmlNodePtr node) { + xmlDocPtr doc; + xmlDictPtr dict; + + doc = node->doc; + + if (node->parent == NULL) + xmlDebugErr(ctxt, XML_CHECK_NO_PARENT, + "Node has no parent\n"); + if (node->doc == NULL) { + xmlDebugErr(ctxt, XML_CHECK_NO_DOC, + "Node has no doc\n"); + dict = NULL; + } else { + dict = doc->dict; + if ((dict == NULL) && (ctxt->nodict == 0)) { +#if 0 + /* desactivated right now as it raises too many errors */ + if (doc->type == XML_DOCUMENT_NODE) + xmlDebugErr(ctxt, XML_CHECK_NO_DICT, + "Document has no dictionnary\n"); +#endif + ctxt->nodict = 1; + } + if (ctxt->doc == NULL) + ctxt->doc = doc; + + if (ctxt->dict == NULL) { + ctxt->dict = dict; + } + } + if ((node->parent != NULL) && (node->doc != node->parent->doc) && + (!xmlStrEqual(node->name, BAD_CAST "pseudoroot"))) + xmlDebugErr(ctxt, XML_CHECK_WRONG_DOC, + "Node doc differs from parent's one\n"); + if (node->prev == NULL) { + if (node->type == XML_ATTRIBUTE_NODE) { + if ((node->parent != NULL) && + (node != (xmlNodePtr) node->parent->properties)) + xmlDebugErr(ctxt, XML_CHECK_NO_PREV, + "Attr has no prev and not first of attr list\n"); + + } else if ((node->parent != NULL) && (node->parent->children != node)) + xmlDebugErr(ctxt, XML_CHECK_NO_PREV, + "Node has no prev and not first of parent list\n"); + } else { + if (node->prev->next != node) + xmlDebugErr(ctxt, XML_CHECK_WRONG_PREV, + "Node prev->next : back link wrong\n"); + } + if (node->next == NULL) { + if ((node->parent != NULL) && (node->type != XML_ATTRIBUTE_NODE) && + (node->parent->last != node) && + (node->parent->type == XML_ELEMENT_NODE)) + xmlDebugErr(ctxt, XML_CHECK_NO_NEXT, + "Node has no next and not last of parent list\n"); + } else { + if (node->next->prev != node) + xmlDebugErr(ctxt, XML_CHECK_WRONG_NEXT, + "Node next->prev : forward link wrong\n"); + if (node->next->parent != node->parent) + xmlDebugErr(ctxt, XML_CHECK_WRONG_PARENT, + "Node next->prev : forward link wrong\n"); + } + if (node->type == XML_ELEMENT_NODE) { + xmlNsPtr ns; + + ns = node->nsDef; + while (ns != NULL) { + xmlCtxtNsCheckScope(ctxt, node, ns); + ns = ns->next; + } + if (node->ns != NULL) + xmlCtxtNsCheckScope(ctxt, node, node->ns); + } else if (node->type == XML_ATTRIBUTE_NODE) { + if (node->ns != NULL) + xmlCtxtNsCheckScope(ctxt, node, node->ns); + } + + if ((node->type != XML_ELEMENT_NODE) && + (node->type != XML_ATTRIBUTE_NODE) && + (node->type != XML_ELEMENT_DECL) && + (node->type != XML_ATTRIBUTE_DECL) && + (node->type != XML_DTD_NODE) && + (node->type != XML_ELEMENT_DECL) && + (node->type != XML_HTML_DOCUMENT_NODE) && + (node->type != XML_DOCUMENT_NODE)) { + if (node->content != NULL) + xmlCtxtCheckString(ctxt, (const xmlChar *) node->content); + } + switch (node->type) { + case XML_ELEMENT_NODE: + case XML_ATTRIBUTE_NODE: + xmlCtxtCheckName(ctxt, node->name); + break; + case XML_TEXT_NODE: + if ((node->name == xmlStringText) || + (node->name == xmlStringTextNoenc)) + break; + /* some case of entity substitution can lead to this */ + if ((ctxt->dict != NULL) && + (node->name == xmlDictLookup(ctxt->dict, BAD_CAST "nbktext", + 7))) + break; + + xmlDebugErr3(ctxt, XML_CHECK_WRONG_NAME, + "Text node has wrong name '%s'", + (const char *) node->name); + break; + case XML_COMMENT_NODE: + if (node->name == xmlStringComment) + break; + xmlDebugErr3(ctxt, XML_CHECK_WRONG_NAME, + "Comment node has wrong name '%s'", + (const char *) node->name); + break; + case XML_PI_NODE: + xmlCtxtCheckName(ctxt, node->name); + break; + case XML_CDATA_SECTION_NODE: + if (node->name == NULL) + break; + xmlDebugErr3(ctxt, XML_CHECK_NAME_NOT_NULL, + "CData section has non NULL name '%s'", + (const char *) node->name); + break; + case XML_ENTITY_REF_NODE: + case XML_ENTITY_NODE: + case XML_DOCUMENT_TYPE_NODE: + case XML_DOCUMENT_FRAG_NODE: + case XML_NOTATION_NODE: + case XML_DTD_NODE: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + case XML_ENTITY_DECL: + case XML_NAMESPACE_DECL: + case XML_XINCLUDE_START: + case XML_XINCLUDE_END: +#ifdef LIBXML_DOCB_ENABLED + case XML_DOCB_DOCUMENT_NODE: +#endif + case XML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: + break; + } +} + +static void +xmlCtxtDumpString(xmlDebugCtxtPtr ctxt, const xmlChar * str) +{ + int i; + + if (ctxt->check) { + return; + } + /* TODO: check UTF8 content of the string */ + if (str == NULL) { + fprintf(ctxt->output, "(NULL)"); + return; + } + for (i = 0; i < 40; i++) + if (str[i] == 0) + return; + else if (IS_BLANK_CH(str[i])) + fputc(' ', ctxt->output); + else if (str[i] >= 0x80) + fprintf(ctxt->output, "#%X", str[i]); + else + fputc(str[i], ctxt->output); + fprintf(ctxt->output, "..."); +} + +static void +xmlCtxtDumpDtdNode(xmlDebugCtxtPtr ctxt, xmlDtdPtr dtd) +{ + xmlCtxtDumpSpaces(ctxt); + + if (dtd == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "DTD node is NULL\n"); + return; + } + + if (dtd->type != XML_DTD_NODE) { + xmlDebugErr(ctxt, XML_CHECK_NOT_DTD, + "Node is not a DTD"); + return; + } + if (!ctxt->check) { + if (dtd->name != NULL) + fprintf(ctxt->output, "DTD(%s)", (char *) dtd->name); + else + fprintf(ctxt->output, "DTD"); + if (dtd->ExternalID != NULL) + fprintf(ctxt->output, ", PUBLIC %s", (char *) dtd->ExternalID); + if (dtd->SystemID != NULL) + fprintf(ctxt->output, ", SYSTEM %s", (char *) dtd->SystemID); + fprintf(ctxt->output, "\n"); + } + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) dtd); +} + +static void +xmlCtxtDumpAttrDecl(xmlDebugCtxtPtr ctxt, xmlAttributePtr attr) +{ + xmlCtxtDumpSpaces(ctxt); + + if (attr == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Attribute declaration is NULL\n"); + return; + } + if (attr->type != XML_ATTRIBUTE_DECL) { + xmlDebugErr(ctxt, XML_CHECK_NOT_ATTR_DECL, + "Node is not an attribute declaration"); + return; + } + if (attr->name != NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "ATTRDECL(%s)", (char *) attr->name); + } else + xmlDebugErr(ctxt, XML_CHECK_NO_NAME, + "Node attribute declaration has no name"); + if (attr->elem != NULL) { + if (!ctxt->check) + fprintf(ctxt->output, " for %s", (char *) attr->elem); + } else + xmlDebugErr(ctxt, XML_CHECK_NO_ELEM, + "Node attribute declaration has no element name"); + if (!ctxt->check) { + switch (attr->atype) { + case XML_ATTRIBUTE_CDATA: + fprintf(ctxt->output, " CDATA"); + break; + case XML_ATTRIBUTE_ID: + fprintf(ctxt->output, " ID"); + break; + case XML_ATTRIBUTE_IDREF: + fprintf(ctxt->output, " IDREF"); + break; + case XML_ATTRIBUTE_IDREFS: + fprintf(ctxt->output, " IDREFS"); + break; + case XML_ATTRIBUTE_ENTITY: + fprintf(ctxt->output, " ENTITY"); + break; + case XML_ATTRIBUTE_ENTITIES: + fprintf(ctxt->output, " ENTITIES"); + break; + case XML_ATTRIBUTE_NMTOKEN: + fprintf(ctxt->output, " NMTOKEN"); + break; + case XML_ATTRIBUTE_NMTOKENS: + fprintf(ctxt->output, " NMTOKENS"); + break; + case XML_ATTRIBUTE_ENUMERATION: + fprintf(ctxt->output, " ENUMERATION"); + break; + case XML_ATTRIBUTE_NOTATION: + fprintf(ctxt->output, " NOTATION "); + break; + } + if (attr->tree != NULL) { + int indx; + xmlEnumerationPtr cur = attr->tree; + + for (indx = 0; indx < 5; indx++) { + if (indx != 0) + fprintf(ctxt->output, "|%s", (char *) cur->name); + else + fprintf(ctxt->output, " (%s", (char *) cur->name); + cur = cur->next; + if (cur == NULL) + break; + } + if (cur == NULL) + fprintf(ctxt->output, ")"); + else + fprintf(ctxt->output, "...)"); + } + switch (attr->def) { + case XML_ATTRIBUTE_NONE: + break; + case XML_ATTRIBUTE_REQUIRED: + fprintf(ctxt->output, " REQUIRED"); + break; + case XML_ATTRIBUTE_IMPLIED: + fprintf(ctxt->output, " IMPLIED"); + break; + case XML_ATTRIBUTE_FIXED: + fprintf(ctxt->output, " FIXED"); + break; + } + if (attr->defaultValue != NULL) { + fprintf(ctxt->output, "\""); + xmlCtxtDumpString(ctxt, attr->defaultValue); + fprintf(ctxt->output, "\""); + } + fprintf(ctxt->output, "\n"); + } + + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) attr); +} + +static void +xmlCtxtDumpElemDecl(xmlDebugCtxtPtr ctxt, xmlElementPtr elem) +{ + xmlCtxtDumpSpaces(ctxt); + + if (elem == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Element declaration is NULL\n"); + return; + } + if (elem->type != XML_ELEMENT_DECL) { + xmlDebugErr(ctxt, XML_CHECK_NOT_ELEM_DECL, + "Node is not an element declaration"); + return; + } + if (elem->name != NULL) { + if (!ctxt->check) { + fprintf(ctxt->output, "ELEMDECL("); + xmlCtxtDumpString(ctxt, elem->name); + fprintf(ctxt->output, ")"); + } + } else + xmlDebugErr(ctxt, XML_CHECK_NO_NAME, + "Element declaration has no name"); + if (!ctxt->check) { + switch (elem->etype) { + case XML_ELEMENT_TYPE_UNDEFINED: + fprintf(ctxt->output, ", UNDEFINED"); + break; + case XML_ELEMENT_TYPE_EMPTY: + fprintf(ctxt->output, ", EMPTY"); + break; + case XML_ELEMENT_TYPE_ANY: + fprintf(ctxt->output, ", ANY"); + break; + case XML_ELEMENT_TYPE_MIXED: + fprintf(ctxt->output, ", MIXED "); + break; + case XML_ELEMENT_TYPE_ELEMENT: + fprintf(ctxt->output, ", MIXED "); + break; + } + if ((elem->type != XML_ELEMENT_NODE) && (elem->content != NULL)) { + char buf[5001]; + + buf[0] = 0; + xmlSnprintfElementContent(buf, 5000, elem->content, 1); + buf[5000] = 0; + fprintf(ctxt->output, "%s", buf); + } + fprintf(ctxt->output, "\n"); + } + + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) elem); +} + +static void +xmlCtxtDumpEntityDecl(xmlDebugCtxtPtr ctxt, xmlEntityPtr ent) +{ + xmlCtxtDumpSpaces(ctxt); + + if (ent == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Entity declaration is NULL\n"); + return; + } + if (ent->type != XML_ENTITY_DECL) { + xmlDebugErr(ctxt, XML_CHECK_NOT_ENTITY_DECL, + "Node is not an entity declaration"); + return; + } + if (ent->name != NULL) { + if (!ctxt->check) { + fprintf(ctxt->output, "ENTITYDECL("); + xmlCtxtDumpString(ctxt, ent->name); + fprintf(ctxt->output, ")"); + } + } else + xmlDebugErr(ctxt, XML_CHECK_NO_NAME, + "Entity declaration has no name"); + if (!ctxt->check) { + switch (ent->etype) { + case XML_INTERNAL_GENERAL_ENTITY: + fprintf(ctxt->output, ", internal\n"); + break; + case XML_EXTERNAL_GENERAL_PARSED_ENTITY: + fprintf(ctxt->output, ", external parsed\n"); + break; + case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: + fprintf(ctxt->output, ", unparsed\n"); + break; + case XML_INTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, ", parameter\n"); + break; + case XML_EXTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, ", external parameter\n"); + break; + case XML_INTERNAL_PREDEFINED_ENTITY: + fprintf(ctxt->output, ", predefined\n"); + break; + } + if (ent->ExternalID) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, " ExternalID=%s\n", + (char *) ent->ExternalID); + } + if (ent->SystemID) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, " SystemID=%s\n", + (char *) ent->SystemID); + } + if (ent->URI != NULL) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, " URI=%s\n", (char *) ent->URI); + } + if (ent->content) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, " content="); + xmlCtxtDumpString(ctxt, ent->content); + fprintf(ctxt->output, "\n"); + } + } + + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) ent); +} + +static void +xmlCtxtDumpNamespace(xmlDebugCtxtPtr ctxt, xmlNsPtr ns) +{ + xmlCtxtDumpSpaces(ctxt); + + if (ns == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "namespace node is NULL\n"); + return; + } + if (ns->type != XML_NAMESPACE_DECL) { + xmlDebugErr(ctxt, XML_CHECK_NOT_NS_DECL, + "Node is not a namespace declaration"); + return; + } + if (ns->href == NULL) { + if (ns->prefix != NULL) + xmlDebugErr3(ctxt, XML_CHECK_NO_HREF, + "Incomplete namespace %s href=NULL\n", + (char *) ns->prefix); + else + xmlDebugErr(ctxt, XML_CHECK_NO_HREF, + "Incomplete default namespace href=NULL\n"); + } else { + if (!ctxt->check) { + if (ns->prefix != NULL) + fprintf(ctxt->output, "namespace %s href=", + (char *) ns->prefix); + else + fprintf(ctxt->output, "default namespace href="); + + xmlCtxtDumpString(ctxt, ns->href); + fprintf(ctxt->output, "\n"); + } + } +} + +static void +xmlCtxtDumpNamespaceList(xmlDebugCtxtPtr ctxt, xmlNsPtr ns) +{ + while (ns != NULL) { + xmlCtxtDumpNamespace(ctxt, ns); + ns = ns->next; + } +} + +static void +xmlCtxtDumpEntity(xmlDebugCtxtPtr ctxt, xmlEntityPtr ent) +{ + xmlCtxtDumpSpaces(ctxt); + + if (ent == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Entity is NULL\n"); + return; + } + if (!ctxt->check) { + switch (ent->etype) { + case XML_INTERNAL_GENERAL_ENTITY: + fprintf(ctxt->output, "INTERNAL_GENERAL_ENTITY "); + break; + case XML_EXTERNAL_GENERAL_PARSED_ENTITY: + fprintf(ctxt->output, "EXTERNAL_GENERAL_PARSED_ENTITY "); + break; + case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: + fprintf(ctxt->output, "EXTERNAL_GENERAL_UNPARSED_ENTITY "); + break; + case XML_INTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, "INTERNAL_PARAMETER_ENTITY "); + break; + case XML_EXTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, "EXTERNAL_PARAMETER_ENTITY "); + break; + default: + fprintf(ctxt->output, "ENTITY_%d ! ", (int) ent->etype); + } + fprintf(ctxt->output, "%s\n", ent->name); + if (ent->ExternalID) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "ExternalID=%s\n", + (char *) ent->ExternalID); + } + if (ent->SystemID) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "SystemID=%s\n", (char *) ent->SystemID); + } + if (ent->URI) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "URI=%s\n", (char *) ent->URI); + } + if (ent->content) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "content="); + xmlCtxtDumpString(ctxt, ent->content); + fprintf(ctxt->output, "\n"); + } + } +} + +/** + * xmlCtxtDumpAttr: + * @output: the FILE * for the output + * @attr: the attribute + * @depth: the indentation level. + * + * Dumps debug information for the attribute + */ +static void +xmlCtxtDumpAttr(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr) +{ + xmlCtxtDumpSpaces(ctxt); + + if (attr == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Attr is NULL"); + return; + } + if (!ctxt->check) { + fprintf(ctxt->output, "ATTRIBUTE "); + xmlCtxtDumpString(ctxt, attr->name); + fprintf(ctxt->output, "\n"); + if (attr->children != NULL) { + ctxt->depth++; + xmlCtxtDumpNodeList(ctxt, attr->children); + ctxt->depth--; + } + } + if (attr->name == NULL) + xmlDebugErr(ctxt, XML_CHECK_NO_NAME, + "Attribute has no name"); + + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, (xmlNodePtr) attr); +} + +/** + * xmlCtxtDumpAttrList: + * @output: the FILE * for the output + * @attr: the attribute list + * @depth: the indentation level. + * + * Dumps debug information for the attribute list + */ +static void +xmlCtxtDumpAttrList(xmlDebugCtxtPtr ctxt, xmlAttrPtr attr) +{ + while (attr != NULL) { + xmlCtxtDumpAttr(ctxt, attr); + attr = attr->next; + } +} + +/** + * xmlCtxtDumpOneNode: + * @output: the FILE * for the output + * @node: the node + * @depth: the indentation level. + * + * Dumps debug information for the element node, it is not recursive + */ +static void +xmlCtxtDumpOneNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) +{ + if (node == NULL) { + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "node is NULL\n"); + } + return; + } + ctxt->node = node; + + switch (node->type) { + case XML_ELEMENT_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "ELEMENT "); + if ((node->ns != NULL) && (node->ns->prefix != NULL)) { + xmlCtxtDumpString(ctxt, node->ns->prefix); + fprintf(ctxt->output, ":"); + } + xmlCtxtDumpString(ctxt, node->name); + fprintf(ctxt->output, "\n"); + } + break; + case XML_ATTRIBUTE_NODE: + if (!ctxt->check) + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "Error, ATTRIBUTE found here\n"); + xmlCtxtGenericNodeCheck(ctxt, node); + return; + case XML_TEXT_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + if (node->name == (const xmlChar *) xmlStringTextNoenc) + fprintf(ctxt->output, "TEXT no enc"); + else + fprintf(ctxt->output, "TEXT"); + if (ctxt->options & DUMP_TEXT_TYPE) { + if (node->content == (xmlChar *) &(node->properties)) + fprintf(ctxt->output, " compact\n"); + else if (xmlDictOwns(ctxt->dict, node->content) == 1) + fprintf(ctxt->output, " interned\n"); + else + fprintf(ctxt->output, "\n"); + } else + fprintf(ctxt->output, "\n"); + } + break; + case XML_CDATA_SECTION_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "CDATA_SECTION\n"); + } + break; + case XML_ENTITY_REF_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "ENTITY_REF(%s)\n", + (char *) node->name); + } + break; + case XML_ENTITY_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "ENTITY\n"); + } + break; + case XML_PI_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "PI %s\n", (char *) node->name); + } + break; + case XML_COMMENT_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "COMMENT\n"); + } + break; + case XML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + } + fprintf(ctxt->output, "Error, DOCUMENT found here\n"); + xmlCtxtGenericNodeCheck(ctxt, node); + return; + case XML_DOCUMENT_TYPE_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "DOCUMENT_TYPE\n"); + } + break; + case XML_DOCUMENT_FRAG_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "DOCUMENT_FRAG\n"); + } + break; + case XML_NOTATION_NODE: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "NOTATION\n"); + } + break; + case XML_DTD_NODE: + xmlCtxtDumpDtdNode(ctxt, (xmlDtdPtr) node); + return; + case XML_ELEMENT_DECL: + xmlCtxtDumpElemDecl(ctxt, (xmlElementPtr) node); + return; + case XML_ATTRIBUTE_DECL: + xmlCtxtDumpAttrDecl(ctxt, (xmlAttributePtr) node); + return; + case XML_ENTITY_DECL: + xmlCtxtDumpEntityDecl(ctxt, (xmlEntityPtr) node); + return; + case XML_NAMESPACE_DECL: + xmlCtxtDumpNamespace(ctxt, (xmlNsPtr) node); + return; + case XML_XINCLUDE_START: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "INCLUDE START\n"); + } + return; + case XML_XINCLUDE_END: + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "INCLUDE END\n"); + } + return; + default: + if (!ctxt->check) + xmlCtxtDumpSpaces(ctxt); + xmlDebugErr2(ctxt, XML_CHECK_UNKNOWN_NODE, + "Unknown node type %d\n", node->type); + return; + } + if (node->doc == NULL) { + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + } + fprintf(ctxt->output, "PBM: doc == NULL !!!\n"); + } + ctxt->depth++; + if ((node->type == XML_ELEMENT_NODE) && (node->nsDef != NULL)) + xmlCtxtDumpNamespaceList(ctxt, node->nsDef); + if ((node->type == XML_ELEMENT_NODE) && (node->properties != NULL)) + xmlCtxtDumpAttrList(ctxt, node->properties); + if (node->type != XML_ENTITY_REF_NODE) { + if ((node->type != XML_ELEMENT_NODE) && (node->content != NULL)) { + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "content="); + xmlCtxtDumpString(ctxt, node->content); + fprintf(ctxt->output, "\n"); + } + } + } else { + xmlEntityPtr ent; + + ent = xmlGetDocEntity(node->doc, node->name); + if (ent != NULL) + xmlCtxtDumpEntity(ctxt, ent); + } + ctxt->depth--; + + /* + * Do a bit of checking + */ + xmlCtxtGenericNodeCheck(ctxt, node); +} + +/** + * xmlCtxtDumpNode: + * @output: the FILE * for the output + * @node: the node + * @depth: the indentation level. + * + * Dumps debug information for the element node, it is recursive + */ +static void +xmlCtxtDumpNode(xmlDebugCtxtPtr ctxt, xmlNodePtr node) +{ + if (node == NULL) { + if (!ctxt->check) { + xmlCtxtDumpSpaces(ctxt); + fprintf(ctxt->output, "node is NULL\n"); + } + return; + } + xmlCtxtDumpOneNode(ctxt, node); + if ((node->type != XML_NAMESPACE_DECL) && + (node->children != NULL) && (node->type != XML_ENTITY_REF_NODE)) { + ctxt->depth++; + xmlCtxtDumpNodeList(ctxt, node->children); + ctxt->depth--; + } +} + +/** + * xmlCtxtDumpNodeList: + * @output: the FILE * for the output + * @node: the node list + * @depth: the indentation level. + * + * Dumps debug information for the list of element node, it is recursive + */ +static void +xmlCtxtDumpNodeList(xmlDebugCtxtPtr ctxt, xmlNodePtr node) +{ + while (node != NULL) { + xmlCtxtDumpNode(ctxt, node); + node = node->next; + } +} + +static void +xmlCtxtDumpDocHead(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) +{ + if (doc == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "DOCUMENT == NULL !\n"); + return; + } + ctxt->node = (xmlNodePtr) doc; + + switch (doc->type) { + case XML_ELEMENT_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_ELEMENT, + "Misplaced ELEMENT node\n"); + break; + case XML_ATTRIBUTE_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_ATTRIBUTE, + "Misplaced ATTRIBUTE node\n"); + break; + case XML_TEXT_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_TEXT, + "Misplaced TEXT node\n"); + break; + case XML_CDATA_SECTION_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_CDATA, + "Misplaced CDATA node\n"); + break; + case XML_ENTITY_REF_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_ENTITYREF, + "Misplaced ENTITYREF node\n"); + break; + case XML_ENTITY_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_ENTITY, + "Misplaced ENTITY node\n"); + break; + case XML_PI_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_PI, + "Misplaced PI node\n"); + break; + case XML_COMMENT_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_COMMENT, + "Misplaced COMMENT node\n"); + break; + case XML_DOCUMENT_NODE: + if (!ctxt->check) + fprintf(ctxt->output, "DOCUMENT\n"); + break; + case XML_HTML_DOCUMENT_NODE: + if (!ctxt->check) + fprintf(ctxt->output, "HTML DOCUMENT\n"); + break; + case XML_DOCUMENT_TYPE_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_DOCTYPE, + "Misplaced DOCTYPE node\n"); + break; + case XML_DOCUMENT_FRAG_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_FRAGMENT, + "Misplaced FRAGMENT node\n"); + break; + case XML_NOTATION_NODE: + xmlDebugErr(ctxt, XML_CHECK_FOUND_NOTATION, + "Misplaced NOTATION node\n"); + break; + default: + xmlDebugErr2(ctxt, XML_CHECK_UNKNOWN_NODE, + "Unknown node type %d\n", doc->type); + } +} + +/** + * xmlCtxtDumpDocumentHead: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information cncerning the document, not recursive + */ +static void +xmlCtxtDumpDocumentHead(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) +{ + if (doc == NULL) return; + xmlCtxtDumpDocHead(ctxt, doc); + if (!ctxt->check) { + if (doc->name != NULL) { + fprintf(ctxt->output, "name="); + xmlCtxtDumpString(ctxt, BAD_CAST doc->name); + fprintf(ctxt->output, "\n"); + } + if (doc->version != NULL) { + fprintf(ctxt->output, "version="); + xmlCtxtDumpString(ctxt, doc->version); + fprintf(ctxt->output, "\n"); + } + if (doc->encoding != NULL) { + fprintf(ctxt->output, "encoding="); + xmlCtxtDumpString(ctxt, doc->encoding); + fprintf(ctxt->output, "\n"); + } + if (doc->URL != NULL) { + fprintf(ctxt->output, "URL="); + xmlCtxtDumpString(ctxt, doc->URL); + fprintf(ctxt->output, "\n"); + } + if (doc->standalone) + fprintf(ctxt->output, "standalone=true\n"); + } + if (doc->oldNs != NULL) + xmlCtxtDumpNamespaceList(ctxt, doc->oldNs); +} + +/** + * xmlCtxtDumpDocument: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information for the document, it's recursive + */ +static void +xmlCtxtDumpDocument(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) +{ + if (doc == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "DOCUMENT == NULL !\n"); + return; + } + xmlCtxtDumpDocumentHead(ctxt, doc); + if (((doc->type == XML_DOCUMENT_NODE) || + (doc->type == XML_HTML_DOCUMENT_NODE)) + && (doc->children != NULL)) { + ctxt->depth++; + xmlCtxtDumpNodeList(ctxt, doc->children); + ctxt->depth--; + } +} + +static void +xmlCtxtDumpEntityCallback(xmlEntityPtr cur, xmlDebugCtxtPtr ctxt) +{ + if (cur == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "Entity is NULL"); + return; + } + if (!ctxt->check) { + fprintf(ctxt->output, "%s : ", (char *) cur->name); + switch (cur->etype) { + case XML_INTERNAL_GENERAL_ENTITY: + fprintf(ctxt->output, "INTERNAL GENERAL, "); + break; + case XML_EXTERNAL_GENERAL_PARSED_ENTITY: + fprintf(ctxt->output, "EXTERNAL PARSED, "); + break; + case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY: + fprintf(ctxt->output, "EXTERNAL UNPARSED, "); + break; + case XML_INTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, "INTERNAL PARAMETER, "); + break; + case XML_EXTERNAL_PARAMETER_ENTITY: + fprintf(ctxt->output, "EXTERNAL PARAMETER, "); + break; + default: + xmlDebugErr2(ctxt, XML_CHECK_ENTITY_TYPE, + "Unknown entity type %d\n", cur->etype); + } + if (cur->ExternalID != NULL) + fprintf(ctxt->output, "ID \"%s\"", (char *) cur->ExternalID); + if (cur->SystemID != NULL) + fprintf(ctxt->output, "SYSTEM \"%s\"", (char *) cur->SystemID); + if (cur->orig != NULL) + fprintf(ctxt->output, "\n orig \"%s\"", (char *) cur->orig); + if ((cur->type != XML_ELEMENT_NODE) && (cur->content != NULL)) + fprintf(ctxt->output, "\n content \"%s\"", + (char *) cur->content); + fprintf(ctxt->output, "\n"); + } +} + +/** + * xmlCtxtDumpEntities: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information for all the entities in use by the document + */ +static void +xmlCtxtDumpEntities(xmlDebugCtxtPtr ctxt, xmlDocPtr doc) +{ + if (doc == NULL) return; + xmlCtxtDumpDocHead(ctxt, doc); + if ((doc->intSubset != NULL) && (doc->intSubset->entities != NULL)) { + xmlEntitiesTablePtr table = (xmlEntitiesTablePtr) + doc->intSubset->entities; + + if (!ctxt->check) + fprintf(ctxt->output, "Entities in internal subset\n"); + xmlHashScan(table, (xmlHashScanner) xmlCtxtDumpEntityCallback, + ctxt); + } else + fprintf(ctxt->output, "No entities in internal subset\n"); + if ((doc->extSubset != NULL) && (doc->extSubset->entities != NULL)) { + xmlEntitiesTablePtr table = (xmlEntitiesTablePtr) + doc->extSubset->entities; + + if (!ctxt->check) + fprintf(ctxt->output, "Entities in external subset\n"); + xmlHashScan(table, (xmlHashScanner) xmlCtxtDumpEntityCallback, + ctxt); + } else if (!ctxt->check) + fprintf(ctxt->output, "No entities in external subset\n"); +} + +/** + * xmlCtxtDumpDTD: + * @output: the FILE * for the output + * @dtd: the DTD + * + * Dumps debug information for the DTD + */ +static void +xmlCtxtDumpDTD(xmlDebugCtxtPtr ctxt, xmlDtdPtr dtd) +{ + if (dtd == NULL) { + if (!ctxt->check) + fprintf(ctxt->output, "DTD is NULL\n"); + return; + } + xmlCtxtDumpDtdNode(ctxt, dtd); + if (dtd->children == NULL) + fprintf(ctxt->output, " DTD is empty\n"); + else { + ctxt->depth++; + xmlCtxtDumpNodeList(ctxt, dtd->children); + ctxt->depth--; + } +} + +/************************************************************************ + * * + * Public entry points for dump * + * * + ************************************************************************/ + +/** + * xmlDebugDumpString: + * @output: the FILE * for the output + * @str: the string + * + * Dumps informations about the string, shorten it if necessary + */ +void +xmlDebugDumpString(FILE * output, const xmlChar * str) +{ + int i; + + if (output == NULL) + output = stdout; + if (str == NULL) { + fprintf(output, "(NULL)"); + return; + } + for (i = 0; i < 40; i++) + if (str[i] == 0) + return; + else if (IS_BLANK_CH(str[i])) + fputc(' ', output); + else if (str[i] >= 0x80) + fprintf(output, "#%X", str[i]); + else + fputc(str[i], output); + fprintf(output, "..."); +} + +/** + * xmlDebugDumpAttr: + * @output: the FILE * for the output + * @attr: the attribute + * @depth: the indentation level. + * + * Dumps debug information for the attribute + */ +void +xmlDebugDumpAttr(FILE *output, xmlAttrPtr attr, int depth) { + xmlDebugCtxt ctxt; + + if (output == NULL) return; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.depth = depth; + xmlCtxtDumpAttr(&ctxt, attr); + xmlCtxtDumpCleanCtxt(&ctxt); +} + + +/** + * xmlDebugDumpEntities: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information for all the entities in use by the document + */ +void +xmlDebugDumpEntities(FILE * output, xmlDocPtr doc) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) return; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + xmlCtxtDumpEntities(&ctxt, doc); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpAttrList: + * @output: the FILE * for the output + * @attr: the attribute list + * @depth: the indentation level. + * + * Dumps debug information for the attribute list + */ +void +xmlDebugDumpAttrList(FILE * output, xmlAttrPtr attr, int depth) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) return; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.depth = depth; + xmlCtxtDumpAttrList(&ctxt, attr); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpOneNode: + * @output: the FILE * for the output + * @node: the node + * @depth: the indentation level. + * + * Dumps debug information for the element node, it is not recursive + */ +void +xmlDebugDumpOneNode(FILE * output, xmlNodePtr node, int depth) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) return; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.depth = depth; + xmlCtxtDumpOneNode(&ctxt, node); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpNode: + * @output: the FILE * for the output + * @node: the node + * @depth: the indentation level. + * + * Dumps debug information for the element node, it is recursive + */ +void +xmlDebugDumpNode(FILE * output, xmlNodePtr node, int depth) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.depth = depth; + xmlCtxtDumpNode(&ctxt, node); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpNodeList: + * @output: the FILE * for the output + * @node: the node list + * @depth: the indentation level. + * + * Dumps debug information for the list of element node, it is recursive + */ +void +xmlDebugDumpNodeList(FILE * output, xmlNodePtr node, int depth) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.depth = depth; + xmlCtxtDumpNodeList(&ctxt, node); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpDocumentHead: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information cncerning the document, not recursive + */ +void +xmlDebugDumpDocumentHead(FILE * output, xmlDocPtr doc) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; + ctxt.output = output; + xmlCtxtDumpDocumentHead(&ctxt, doc); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpDocument: + * @output: the FILE * for the output + * @doc: the document + * + * Dumps debug information for the document, it's recursive + */ +void +xmlDebugDumpDocument(FILE * output, xmlDocPtr doc) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; + ctxt.output = output; + xmlCtxtDumpDocument(&ctxt, doc); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/** + * xmlDebugDumpDTD: + * @output: the FILE * for the output + * @dtd: the DTD + * + * Dumps debug information for the DTD + */ +void +xmlDebugDumpDTD(FILE * output, xmlDtdPtr dtd) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.options |= DUMP_TEXT_TYPE; + ctxt.output = output; + xmlCtxtDumpDTD(&ctxt, dtd); + xmlCtxtDumpCleanCtxt(&ctxt); +} + +/************************************************************************ + * * + * Public entry points for checkings * + * * + ************************************************************************/ + +/** + * xmlDebugCheckDocument: + * @output: the FILE * for the output + * @doc: the document + * + * Check the document for potential content problems, and output + * the errors to @output + * + * Returns the number of errors found + */ +int +xmlDebugCheckDocument(FILE * output, xmlDocPtr doc) +{ + xmlDebugCtxt ctxt; + + if (output == NULL) + output = stdout; + xmlCtxtDumpInitCtxt(&ctxt); + ctxt.output = output; + ctxt.check = 1; + xmlCtxtDumpDocument(&ctxt, doc); + xmlCtxtDumpCleanCtxt(&ctxt); + return(ctxt.errors); +} + +/************************************************************************ + * * + * Helpers for Shell * + * * + ************************************************************************/ + +/** + * xmlLsCountNode: + * @node: the node to count + * + * Count the children of @node. + * + * Returns the number of children of @node. + */ +int +xmlLsCountNode(xmlNodePtr node) { + int ret = 0; + xmlNodePtr list = NULL; + + if (node == NULL) + return(0); + + switch (node->type) { + case XML_ELEMENT_NODE: + list = node->children; + break; + case XML_DOCUMENT_NODE: + case XML_HTML_DOCUMENT_NODE: +#ifdef LIBXML_DOCB_ENABLED + case XML_DOCB_DOCUMENT_NODE: +#endif + list = ((xmlDocPtr) node)->children; + break; + case XML_ATTRIBUTE_NODE: + list = ((xmlAttrPtr) node)->children; + break; + case XML_TEXT_NODE: + case XML_CDATA_SECTION_NODE: + case XML_PI_NODE: + case XML_COMMENT_NODE: + if (node->content != NULL) { + ret = xmlStrlen(node->content); + } + break; + case XML_ENTITY_REF_NODE: + case XML_DOCUMENT_TYPE_NODE: + case XML_ENTITY_NODE: + case XML_DOCUMENT_FRAG_NODE: + case XML_NOTATION_NODE: + case XML_DTD_NODE: + case XML_ELEMENT_DECL: + case XML_ATTRIBUTE_DECL: + case XML_ENTITY_DECL: + case XML_NAMESPACE_DECL: + case XML_XINCLUDE_START: + case XML_XINCLUDE_END: + ret = 1; + break; + } + for (;list != NULL;ret++) + list = list->next; + return(ret); +} + +/** + * xmlLsOneNode: + * @output: the FILE * for the output + * @node: the node to dump + * + * Dump to @output the type and name of @node. + */ +void +xmlLsOneNode(FILE *output, xmlNodePtr node) { + if (output == NULL) return; + if (node == NULL) { + fprintf(output, "NULL\n"); + return; + } + switch (node->type) { + case XML_ELEMENT_NODE: + fprintf(output, "-"); + break; + case XML_ATTRIBUTE_NODE: + fprintf(output, "a"); + break; + case XML_TEXT_NODE: + fprintf(output, "t"); + break; + case XML_CDATA_SECTION_NODE: + fprintf(output, "C"); + break; + case XML_ENTITY_REF_NODE: + fprintf(output, "e"); + break; + case XML_ENTITY_NODE: + fprintf(output, "E"); + break; + case XML_PI_NODE: + fprintf(output, "p"); + break; + case XML_COMMENT_NODE: + fprintf(output, "c"); + break; + case XML_DOCUMENT_NODE: + fprintf(output, "d"); + break; + case XML_HTML_DOCUMENT_NODE: + fprintf(output, "h"); + break; + case XML_DOCUMENT_TYPE_NODE: + fprintf(output, "T"); + break; + case XML_DOCUMENT_FRAG_NODE: + fprintf(output, "F"); + break; + case XML_NOTATION_NODE: + fprintf(output, "N"); + break; + case XML_NAMESPACE_DECL: + fprintf(output, "n"); + break; + default: + fprintf(output, "?"); + } + if (node->type != XML_NAMESPACE_DECL) { + if (node->properties != NULL) + fprintf(output, "a"); + else + fprintf(output, "-"); + if (node->nsDef != NULL) + fprintf(output, "n"); + else + fprintf(output, "-"); + } + + fprintf(output, " %8d ", xmlLsCountNode(node)); + + switch (node->type) { + case XML_ELEMENT_NODE: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + break; + case XML_ATTRIBUTE_NODE: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + break; + case XML_TEXT_NODE: + if (node->content != NULL) { + xmlDebugDumpString(output, node->content); + } + break; + case XML_CDATA_SECTION_NODE: + break; + case XML_ENTITY_REF_NODE: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + break; + case XML_ENTITY_NODE: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + break; + case XML_PI_NODE: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + break; + case XML_COMMENT_NODE: + break; + case XML_DOCUMENT_NODE: + break; + case XML_HTML_DOCUMENT_NODE: + break; + case XML_DOCUMENT_TYPE_NODE: + break; + case XML_DOCUMENT_FRAG_NODE: + break; + case XML_NOTATION_NODE: + break; + case XML_NAMESPACE_DECL: { + xmlNsPtr ns = (xmlNsPtr) node; + + if (ns->prefix == NULL) + fprintf(output, "default -> %s", (char *)ns->href); + else + fprintf(output, "%s -> %s", (char *)ns->prefix, + (char *)ns->href); + break; + } + default: + if (node->name != NULL) + fprintf(output, "%s", (const char *) node->name); + } + fprintf(output, "\n"); +} + +/** + * xmlBoolToText: + * @boolval: a bool to turn into text + * + * Convenient way to turn bool into text + * + * Returns a pointer to either "True" or "False" + */ +const char * +xmlBoolToText(int boolval) +{ + if (boolval) + return("True"); + else + return("False"); +} + +#ifdef LIBXML_XPATH_ENABLED +/**************************************************************** + * * + * The XML shell related functions * + * * + ****************************************************************/ + + + +/* + * TODO: Improvement/cleanups for the XML shell + * - allow to shell out an editor on a subpart + * - cleanup function registrations (with help) and calling + * - provide registration routines + */ + +/** + * xmlShellPrintXPathError: + * @errorType: valid xpath error id + * @arg: the argument that cause xpath to fail + * + * Print the xpath error to libxml default error channel + */ +void +xmlShellPrintXPathError(int errorType, const char *arg) +{ + const char *default_arg = "Result"; + + if (!arg) + arg = default_arg; + + switch (errorType) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", arg); + break; + } +#if 0 + xmlGenericError(xmlGenericErrorContext, + "Try casting the result string function (xpath builtin)\n", + arg); +#endif +} + + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlShellPrintNodeCtxt: + * @ctxt : a non-null shell context + * @node : a non-null node to print to the output FILE + * + * Print node to the output FILE + */ +static void +xmlShellPrintNodeCtxt(xmlShellCtxtPtr ctxt,xmlNodePtr node) +{ + FILE *fp; + + if (!node) + return; + if (ctxt == NULL) + fp = stdout; + else + fp = ctxt->output; + + if (node->type == XML_DOCUMENT_NODE) + xmlDocDump(fp, (xmlDocPtr) node); + else if (node->type == XML_ATTRIBUTE_NODE) + xmlDebugDumpAttrList(fp, (xmlAttrPtr) node, 0); + else + xmlElemDump(fp, node->doc, node); + + fprintf(fp, "\n"); +} + +/** + * xmlShellPrintNode: + * @node : a non-null node to print to the output FILE + * + * Print node to the output FILE + */ +void +xmlShellPrintNode(xmlNodePtr node) +{ + xmlShellPrintNodeCtxt(NULL, node); +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +/** + * xmlShellPrintXPathResultCtxt: + * @ctxt: a valid shell context + * @list: a valid result generated by an xpath evaluation + * + * Prints result to the output FILE + */ +static void +xmlShellPrintXPathResultCtxt(xmlShellCtxtPtr ctxt,xmlXPathObjectPtr list) +{ + if (!ctxt) + return; + + if (list != NULL) { + switch (list->type) { + case XPATH_NODESET:{ +#ifdef LIBXML_OUTPUT_ENABLED + int indx; + + if (list->nodesetval) { + for (indx = 0; indx < list->nodesetval->nodeNr; + indx++) { + xmlShellPrintNodeCtxt(ctxt, + list->nodesetval->nodeTab[indx]); + } + } else { + xmlGenericError(xmlGenericErrorContext, + "Empty node set\n"); + } + break; +#else + xmlGenericError(xmlGenericErrorContext, + "Node set\n"); +#endif /* LIBXML_OUTPUT_ENABLED */ + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "Is a Boolean:%s\n", + xmlBoolToText(list->boolval)); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "Is a number:%0g\n", list->floatval); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "Is a string:%s\n", list->stringval); + break; + + default: + xmlShellPrintXPathError(list->type, NULL); + } + } +} + +/** + * xmlShellPrintXPathResult: + * @list: a valid result generated by an xpath evaluation + * + * Prints result to the output FILE + */ +void +xmlShellPrintXPathResult(xmlXPathObjectPtr list) +{ + xmlShellPrintXPathResultCtxt(NULL, list); +} + +/** + * xmlShellList: + * @ctxt: the shell context + * @arg: unused + * @node: a node + * @node2: unused + * + * Implements the XML shell function "ls" + * Does an Unix like listing of the given node (like a directory) + * + * Returns 0 + */ +int +xmlShellList(xmlShellCtxtPtr ctxt, + char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlNodePtr cur; + if (!ctxt) + return (0); + if (node == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + if ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE)) { + cur = ((xmlDocPtr) node)->children; + } else if (node->type == XML_NAMESPACE_DECL) { + xmlLsOneNode(ctxt->output, node); + return (0); + } else if (node->children != NULL) { + cur = node->children; + } else { + xmlLsOneNode(ctxt->output, node); + return (0); + } + while (cur != NULL) { + xmlLsOneNode(ctxt->output, cur); + cur = cur->next; + } + return (0); +} + +/** + * xmlShellBase: + * @ctxt: the shell context + * @arg: unused + * @node: a node + * @node2: unused + * + * Implements the XML shell function "base" + * dumps the current XML base of the node + * + * Returns 0 + */ +int +xmlShellBase(xmlShellCtxtPtr ctxt, + char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlChar *base; + if (!ctxt) + return 0; + if (node == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + + base = xmlNodeGetBase(node->doc, node); + + if (base == NULL) { + fprintf(ctxt->output, " No base found !!!\n"); + } else { + fprintf(ctxt->output, "%s\n", base); + xmlFree(base); + } + return (0); +} + +#ifdef LIBXML_TREE_ENABLED +/** + * xmlShellSetBase: + * @ctxt: the shell context + * @arg: the new base + * @node: a node + * @node2: unused + * + * Implements the XML shell function "setbase" + * change the current XML base of the node + * + * Returns 0 + */ +static int +xmlShellSetBase(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, + char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlNodeSetBase(node, (xmlChar*) arg); + return (0); +} +#endif + +#ifdef LIBXML_XPATH_ENABLED +/** + * xmlShellRegisterNamespace: + * @ctxt: the shell context + * @arg: a string in prefix=nsuri format + * @node: unused + * @node2: unused + * + * Implements the XML shell function "setns" + * register/unregister a prefix=namespace pair + * on the XPath context + * + * Returns 0 on success and a negative value otherwise. + */ +static int +xmlShellRegisterNamespace(xmlShellCtxtPtr ctxt, char *arg, + xmlNodePtr node ATTRIBUTE_UNUSED, xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlChar* nsListDup; + xmlChar* prefix; + xmlChar* href; + xmlChar* next; + + nsListDup = xmlStrdup((xmlChar *) arg); + next = nsListDup; + while(next != NULL) { + /* skip spaces */ + /*while((*next) == ' ') next++;*/ + if((*next) == '\0') break; + + /* find prefix */ + prefix = next; + next = (xmlChar*)xmlStrchr(next, '='); + if(next == NULL) { + fprintf(ctxt->output, "setns: prefix=[nsuri] required\n"); + xmlFree(nsListDup); + return(-1); + } + *(next++) = '\0'; + + /* find href */ + href = next; + next = (xmlChar*)xmlStrchr(next, ' '); + if(next != NULL) { + *(next++) = '\0'; + } + + /* do register namespace */ + if(xmlXPathRegisterNs(ctxt->pctxt, prefix, href) != 0) { + fprintf(ctxt->output,"Error: unable to register NS with prefix=\"%s\" and href=\"%s\"\n", prefix, href); + xmlFree(nsListDup); + return(-1); + } + } + + xmlFree(nsListDup); + return(0); +} +/** + * xmlShellRegisterRootNamespaces: + * @ctxt: the shell context + * @arg: unused + * @node: the root element + * @node2: unused + * + * Implements the XML shell function "setrootns" + * which registers all namespaces declarations found on the root element. + * + * Returns 0 on success and a negative value otherwise. + */ +static int +xmlShellRegisterRootNamespaces(xmlShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED, + xmlNodePtr root, xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlNsPtr ns; + + if ((root == NULL) || (root->type != XML_ELEMENT_NODE) || + (root->nsDef == NULL) || (ctxt == NULL) || (ctxt->pctxt == NULL)) + return(-1); + ns = root->nsDef; + while (ns != NULL) { + if (ns->prefix == NULL) + xmlXPathRegisterNs(ctxt->pctxt, BAD_CAST "defaultns", ns->href); + else + xmlXPathRegisterNs(ctxt->pctxt, ns->prefix, ns->href); + ns = ns->next; + } + return(0); +} +#endif + +/** + * xmlShellGrep: + * @ctxt: the shell context + * @arg: the string or regular expression to find + * @node: a node + * @node2: unused + * + * Implements the XML shell function "grep" + * dumps informations about the node (namespace, attributes, content). + * + * Returns 0 + */ +static int +xmlShellGrep(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, + char *arg, xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + if (!ctxt) + return (0); + if (node == NULL) + return (0); + if (arg == NULL) + return (0); +#ifdef LIBXML_REGEXP_ENABLED + if ((xmlStrchr((xmlChar *) arg, '?')) || + (xmlStrchr((xmlChar *) arg, '*')) || + (xmlStrchr((xmlChar *) arg, '.')) || + (xmlStrchr((xmlChar *) arg, '['))) { + } +#endif + while (node != NULL) { + if (node->type == XML_COMMENT_NODE) { + if (xmlStrstr(node->content, (xmlChar *) arg)) { + + fprintf(ctxt->output, "%s : ", xmlGetNodePath(node)); + xmlShellList(ctxt, NULL, node, NULL); + } + } else if (node->type == XML_TEXT_NODE) { + if (xmlStrstr(node->content, (xmlChar *) arg)) { + + fprintf(ctxt->output, "%s : ", xmlGetNodePath(node->parent)); + xmlShellList(ctxt, NULL, node->parent, NULL); + } + } + + /* + * Browse the full subtree, deep first + */ + + if ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE)) { + node = ((xmlDocPtr) node)->children; + } else if ((node->children != NULL) + && (node->type != XML_ENTITY_REF_NODE)) { + /* deep first */ + node = node->children; + } else if (node->next != NULL) { + /* then siblings */ + node = node->next; + } else { + /* go up to parents->next if needed */ + while (node != NULL) { + if (node->parent != NULL) { + node = node->parent; + } + if (node->next != NULL) { + node = node->next; + break; + } + if (node->parent == NULL) { + node = NULL; + break; + } + } + } + } + return (0); +} + +/** + * xmlShellDir: + * @ctxt: the shell context + * @arg: unused + * @node: a node + * @node2: unused + * + * Implements the XML shell function "dir" + * dumps informations about the node (namespace, attributes, content). + * + * Returns 0 + */ +int +xmlShellDir(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, + char *arg ATTRIBUTE_UNUSED, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + if (!ctxt) + return (0); + if (node == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + if ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE)) { + xmlDebugDumpDocumentHead(ctxt->output, (xmlDocPtr) node); + } else if (node->type == XML_ATTRIBUTE_NODE) { + xmlDebugDumpAttr(ctxt->output, (xmlAttrPtr) node, 0); + } else { + xmlDebugDumpOneNode(ctxt->output, node, 0); + } + return (0); +} + +/** + * xmlShellSetContent: + * @ctxt: the shell context + * @value: the content as a string + * @node: a node + * @node2: unused + * + * Implements the XML shell function "dir" + * dumps informations about the node (namespace, attributes, content). + * + * Returns 0 + */ +static int +xmlShellSetContent(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, + char *value, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlNodePtr results; + xmlParserErrors ret; + + if (!ctxt) + return (0); + if (node == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + if (value == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + + ret = xmlParseInNodeContext(node, value, strlen(value), 0, &results); + if (ret == XML_ERR_OK) { + if (node->children != NULL) { + xmlFreeNodeList(node->children); + node->children = NULL; + node->last = NULL; + } + xmlAddChildList(node, results); + } else { + fprintf(ctxt->output, "failed to parse content\n"); + } + return (0); +} + +#ifdef LIBXML_SCHEMAS_ENABLED +/** + * xmlShellRNGValidate: + * @ctxt: the shell context + * @schemas: the path to the Relax-NG schemas + * @node: a node + * @node2: unused + * + * Implements the XML shell function "relaxng" + * validating the instance against a Relax-NG schemas + * + * Returns 0 + */ +static int +xmlShellRNGValidate(xmlShellCtxtPtr sctxt, char *schemas, + xmlNodePtr node ATTRIBUTE_UNUSED, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlRelaxNGPtr relaxngschemas; + xmlRelaxNGParserCtxtPtr ctxt; + xmlRelaxNGValidCtxtPtr vctxt; + int ret; + + ctxt = xmlRelaxNGNewParserCtxt(schemas); + xmlRelaxNGSetParserErrors(ctxt, + (xmlRelaxNGValidityErrorFunc) fprintf, + (xmlRelaxNGValidityWarningFunc) fprintf, + stderr); + relaxngschemas = xmlRelaxNGParse(ctxt); + xmlRelaxNGFreeParserCtxt(ctxt); + if (relaxngschemas == NULL) { + xmlGenericError(xmlGenericErrorContext, + "Relax-NG schema %s failed to compile\n", schemas); + return(-1); + } + vctxt = xmlRelaxNGNewValidCtxt(relaxngschemas); + xmlRelaxNGSetValidErrors(vctxt, + (xmlRelaxNGValidityErrorFunc) fprintf, + (xmlRelaxNGValidityWarningFunc) fprintf, + stderr); + ret = xmlRelaxNGValidateDoc(vctxt, sctxt->doc); + if (ret == 0) { + fprintf(stderr, "%s validates\n", sctxt->filename); + } else if (ret > 0) { + fprintf(stderr, "%s fails to validate\n", sctxt->filename); + } else { + fprintf(stderr, "%s validation generated an internal error\n", + sctxt->filename); + } + xmlRelaxNGFreeValidCtxt(vctxt); + if (relaxngschemas != NULL) + xmlRelaxNGFree(relaxngschemas); + return(0); +} +#endif + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlShellCat: + * @ctxt: the shell context + * @arg: unused + * @node: a node + * @node2: unused + * + * Implements the XML shell function "cat" + * dumps the serialization node content (XML or HTML). + * + * Returns 0 + */ +int +xmlShellCat(xmlShellCtxtPtr ctxt, char *arg ATTRIBUTE_UNUSED, + xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + if (!ctxt) + return (0); + if (node == NULL) { + fprintf(ctxt->output, "NULL\n"); + return (0); + } + if (ctxt->doc->type == XML_HTML_DOCUMENT_NODE) { +#ifdef LIBXML_HTML_ENABLED + if (node->type == XML_HTML_DOCUMENT_NODE) + htmlDocDump(ctxt->output, (htmlDocPtr) node); + else + htmlNodeDumpFile(ctxt->output, ctxt->doc, node); +#else + if (node->type == XML_DOCUMENT_NODE) + xmlDocDump(ctxt->output, (xmlDocPtr) node); + else + xmlElemDump(ctxt->output, ctxt->doc, node); +#endif /* LIBXML_HTML_ENABLED */ + } else { + if (node->type == XML_DOCUMENT_NODE) + xmlDocDump(ctxt->output, (xmlDocPtr) node); + else + xmlElemDump(ctxt->output, ctxt->doc, node); + } + fprintf(ctxt->output, "\n"); + return (0); +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +/** + * xmlShellLoad: + * @ctxt: the shell context + * @filename: the file name + * @node: unused + * @node2: unused + * + * Implements the XML shell function "load" + * loads a new document specified by the filename + * + * Returns 0 or -1 if loading failed + */ +int +xmlShellLoad(xmlShellCtxtPtr ctxt, char *filename, + xmlNodePtr node ATTRIBUTE_UNUSED, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlDocPtr doc; + int html = 0; + + if ((ctxt == NULL) || (filename == NULL)) return(-1); + if (ctxt->doc != NULL) + html = (ctxt->doc->type == XML_HTML_DOCUMENT_NODE); + + if (html) { +#ifdef LIBXML_HTML_ENABLED + doc = htmlParseFile(filename, NULL); +#else + fprintf(ctxt->output, "HTML support not compiled in\n"); + doc = NULL; +#endif /* LIBXML_HTML_ENABLED */ + } else { + doc = xmlReadFile(filename,NULL,0); + } + if (doc != NULL) { + if (ctxt->loaded == 1) { + xmlFreeDoc(ctxt->doc); + } + ctxt->loaded = 1; +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeContext(ctxt->pctxt); +#endif /* LIBXML_XPATH_ENABLED */ + xmlFree(ctxt->filename); + ctxt->doc = doc; + ctxt->node = (xmlNodePtr) doc; +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt = xmlXPathNewContext(doc); +#endif /* LIBXML_XPATH_ENABLED */ + ctxt->filename = (char *) xmlCanonicPath((xmlChar *) filename); + } else + return (-1); + return (0); +} + +#ifdef LIBXML_OUTPUT_ENABLED +/** + * xmlShellWrite: + * @ctxt: the shell context + * @filename: the file name + * @node: a node in the tree + * @node2: unused + * + * Implements the XML shell function "write" + * Write the current node to the filename, it saves the serialization + * of the subtree under the @node specified + * + * Returns 0 or -1 in case of error + */ +int +xmlShellWrite(xmlShellCtxtPtr ctxt, char *filename, xmlNodePtr node, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + if (node == NULL) + return (-1); + if ((filename == NULL) || (filename[0] == 0)) { + return (-1); + } +#ifdef W_OK + if (access((char *) filename, W_OK)) { + xmlGenericError(xmlGenericErrorContext, + "Cannot write to %s\n", filename); + return (-1); + } +#endif + switch (node->type) { + case XML_DOCUMENT_NODE: + if (xmlSaveFile((char *) filename, ctxt->doc) < -1) { + xmlGenericError(xmlGenericErrorContext, + "Failed to write to %s\n", filename); + return (-1); + } + break; + case XML_HTML_DOCUMENT_NODE: +#ifdef LIBXML_HTML_ENABLED + if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { + xmlGenericError(xmlGenericErrorContext, + "Failed to write to %s\n", filename); + return (-1); + } +#else + if (xmlSaveFile((char *) filename, ctxt->doc) < -1) { + xmlGenericError(xmlGenericErrorContext, + "Failed to write to %s\n", filename); + return (-1); + } +#endif /* LIBXML_HTML_ENABLED */ + break; + default:{ + FILE *f; + + f = fopen((char *) filename, "w"); + if (f == NULL) { + xmlGenericError(xmlGenericErrorContext, + "Failed to write to %s\n", filename); + return (-1); + } + xmlElemDump(f, ctxt->doc, node); + fclose(f); + } + } + return (0); +} + +/** + * xmlShellSave: + * @ctxt: the shell context + * @filename: the file name (optional) + * @node: unused + * @node2: unused + * + * Implements the XML shell function "save" + * Write the current document to the filename, or it's original name + * + * Returns 0 or -1 in case of error + */ +int +xmlShellSave(xmlShellCtxtPtr ctxt, char *filename, + xmlNodePtr node ATTRIBUTE_UNUSED, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + if ((ctxt == NULL) || (ctxt->doc == NULL)) + return (-1); + if ((filename == NULL) || (filename[0] == 0)) + filename = ctxt->filename; + if (filename == NULL) + return (-1); +#ifdef W_OK + if (access((char *) filename, W_OK)) { + xmlGenericError(xmlGenericErrorContext, + "Cannot save to %s\n", filename); + return (-1); + } +#endif + switch (ctxt->doc->type) { + case XML_DOCUMENT_NODE: + if (xmlSaveFile((char *) filename, ctxt->doc) < 0) { + xmlGenericError(xmlGenericErrorContext, + "Failed to save to %s\n", filename); + } + break; + case XML_HTML_DOCUMENT_NODE: +#ifdef LIBXML_HTML_ENABLED + if (htmlSaveFile((char *) filename, ctxt->doc) < 0) { + xmlGenericError(xmlGenericErrorContext, + "Failed to save to %s\n", filename); + } +#else + if (xmlSaveFile((char *) filename, ctxt->doc) < 0) { + xmlGenericError(xmlGenericErrorContext, + "Failed to save to %s\n", filename); + } +#endif /* LIBXML_HTML_ENABLED */ + break; + default: + xmlGenericError(xmlGenericErrorContext, + "To save to subparts of a document use the 'write' command\n"); + return (-1); + + } + return (0); +} +#endif /* LIBXML_OUTPUT_ENABLED */ + +#ifdef LIBXML_VALID_ENABLED +/** + * xmlShellValidate: + * @ctxt: the shell context + * @dtd: the DTD URI (optional) + * @node: unused + * @node2: unused + * + * Implements the XML shell function "validate" + * Validate the document, if a DTD path is provided, then the validation + * is done against the given DTD. + * + * Returns 0 or -1 in case of error + */ +int +xmlShellValidate(xmlShellCtxtPtr ctxt, char *dtd, + xmlNodePtr node ATTRIBUTE_UNUSED, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlValidCtxt vctxt; + int res = -1; + + if ((ctxt == NULL) || (ctxt->doc == NULL)) return(-1); + vctxt.userData = stderr; + vctxt.error = (xmlValidityErrorFunc) fprintf; + vctxt.warning = (xmlValidityWarningFunc) fprintf; + + if ((dtd == NULL) || (dtd[0] == 0)) { + res = xmlValidateDocument(&vctxt, ctxt->doc); + } else { + xmlDtdPtr subset; + + subset = xmlParseDTD(NULL, (xmlChar *) dtd); + if (subset != NULL) { + res = xmlValidateDtd(&vctxt, ctxt->doc, subset); + + xmlFreeDtd(subset); + } + } + return (res); +} +#endif /* LIBXML_VALID_ENABLED */ + +/** + * xmlShellDu: + * @ctxt: the shell context + * @arg: unused + * @tree: a node defining a subtree + * @node2: unused + * + * Implements the XML shell function "du" + * show the structure of the subtree under node @tree + * If @tree is null, the command works on the current node. + * + * Returns 0 or -1 in case of error + */ +int +xmlShellDu(xmlShellCtxtPtr ctxt, + char *arg ATTRIBUTE_UNUSED, xmlNodePtr tree, + xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlNodePtr node; + int indent = 0, i; + + if (!ctxt) + return (-1); + + if (tree == NULL) + return (-1); + node = tree; + while (node != NULL) { + if ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE)) { + fprintf(ctxt->output, "/\n"); + } else if (node->type == XML_ELEMENT_NODE) { + for (i = 0; i < indent; i++) + fprintf(ctxt->output, " "); + fprintf(ctxt->output, "%s\n", node->name); + } else { + } + + /* + * Browse the full subtree, deep first + */ + + if ((node->type == XML_DOCUMENT_NODE) || + (node->type == XML_HTML_DOCUMENT_NODE)) { + node = ((xmlDocPtr) node)->children; + } else if ((node->children != NULL) + && (node->type != XML_ENTITY_REF_NODE)) { + /* deep first */ + node = node->children; + indent++; + } else if ((node != tree) && (node->next != NULL)) { + /* then siblings */ + node = node->next; + } else if (node != tree) { + /* go up to parents->next if needed */ + while (node != tree) { + if (node->parent != NULL) { + node = node->parent; + indent--; + } + if ((node != tree) && (node->next != NULL)) { + node = node->next; + break; + } + if (node->parent == NULL) { + node = NULL; + break; + } + if (node == tree) { + node = NULL; + break; + } + } + /* exit condition */ + if (node == tree) + node = NULL; + } else + node = NULL; + } + return (0); +} + +/** + * xmlShellPwd: + * @ctxt: the shell context + * @buffer: the output buffer + * @node: a node + * @node2: unused + * + * Implements the XML shell function "pwd" + * Show the full path from the root to the node, if needed building + * thumblers when similar elements exists at a given ancestor level. + * The output is compatible with XPath commands. + * + * Returns 0 or -1 in case of error + */ +int +xmlShellPwd(xmlShellCtxtPtr ctxt ATTRIBUTE_UNUSED, char *buffer, + xmlNodePtr node, xmlNodePtr node2 ATTRIBUTE_UNUSED) +{ + xmlChar *path; + + if ((node == NULL) || (buffer == NULL)) + return (-1); + + path = xmlGetNodePath(node); + if (path == NULL) + return (-1); + + /* + * This test prevents buffer overflow, because this routine + * is only called by xmlShell, in which the second argument is + * 500 chars long. + * It is a dirty hack before a cleaner solution is found. + * Documentation should mention that the second argument must + * be at least 500 chars long, and could be stripped if too long. + */ + snprintf(buffer, 499, "%s", path); + buffer[499] = '0'; + xmlFree(path); + + return (0); +} + +/** + * xmlShell: + * @doc: the initial document + * @filename: the output buffer + * @input: the line reading function + * @output: the output FILE*, defaults to stdout if NULL + * + * Implements the XML shell + * This allow to load, validate, view, modify and save a document + * using a environment similar to a UNIX commandline. + */ +void +xmlShell(xmlDocPtr doc, char *filename, xmlShellReadlineFunc input, + FILE * output) +{ + char prompt[500] = "/ > "; + char *cmdline = NULL, *cur; + char command[100]; + char arg[400]; + int i; + xmlShellCtxtPtr ctxt; + xmlXPathObjectPtr list; + + if (doc == NULL) + return; + if (filename == NULL) + return; + if (input == NULL) + return; + if (output == NULL) + output = stdout; + ctxt = (xmlShellCtxtPtr) xmlMalloc(sizeof(xmlShellCtxt)); + if (ctxt == NULL) + return; + ctxt->loaded = 0; + ctxt->doc = doc; + ctxt->input = input; + ctxt->output = output; + ctxt->filename = (char *) xmlStrdup((xmlChar *) filename); + ctxt->node = (xmlNodePtr) ctxt->doc; + +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt = xmlXPathNewContext(ctxt->doc); + if (ctxt->pctxt == NULL) { + xmlFree(ctxt); + return; + } +#endif /* LIBXML_XPATH_ENABLED */ + while (1) { + if (ctxt->node == (xmlNodePtr) ctxt->doc) + snprintf(prompt, sizeof(prompt), "%s > ", "/"); + else if ((ctxt->node != NULL) && (ctxt->node->name)) + snprintf(prompt, sizeof(prompt), "%s > ", ctxt->node->name); + else + snprintf(prompt, sizeof(prompt), "? > "); + prompt[sizeof(prompt) - 1] = 0; + + /* + * Get a new command line + */ + cmdline = ctxt->input(prompt); + if (cmdline == NULL) + break; + + /* + * Parse the command itself + */ + cur = cmdline; + while ((*cur == ' ') || (*cur == '\t')) + cur++; + i = 0; + while ((*cur != ' ') && (*cur != '\t') && + (*cur != '\n') && (*cur != '\r')) { + if (*cur == 0) + break; + command[i++] = *cur++; + } + command[i] = 0; + if (i == 0) + continue; + + /* + * Parse the argument + */ + while ((*cur == ' ') || (*cur == '\t')) + cur++; + i = 0; + while ((*cur != '\n') && (*cur != '\r') && (*cur != 0)) { + if (*cur == 0) + break; + arg[i++] = *cur++; + } + arg[i] = 0; + + /* + * start interpreting the command + */ + if (!strcmp(command, "exit")) + break; + if (!strcmp(command, "quit")) + break; + if (!strcmp(command, "bye")) + break; + if (!strcmp(command, "help")) { + fprintf(ctxt->output, "\tbase display XML base of the node\n"); + fprintf(ctxt->output, "\tsetbase URI change the XML base of the node\n"); + fprintf(ctxt->output, "\tbye leave shell\n"); + fprintf(ctxt->output, "\tcat [node] display node or current node\n"); + fprintf(ctxt->output, "\tcd [path] change directory to path or to root\n"); + fprintf(ctxt->output, "\tdir [path] dumps informations about the node (namespace, attributes, content)\n"); + fprintf(ctxt->output, "\tdu [path] show the structure of the subtree under path or the current node\n"); + fprintf(ctxt->output, "\texit leave shell\n"); + fprintf(ctxt->output, "\thelp display this help\n"); + fprintf(ctxt->output, "\tfree display memory usage\n"); + fprintf(ctxt->output, "\tload [name] load a new document with name\n"); + fprintf(ctxt->output, "\tls [path] list contents of path or the current directory\n"); + fprintf(ctxt->output, "\tset xml_fragment replace the current node content with the fragment parsed in context\n"); +#ifdef LIBXML_XPATH_ENABLED + fprintf(ctxt->output, "\txpath expr evaluate the XPath expression in that context and print the result\n"); + fprintf(ctxt->output, "\tsetns nsreg register a namespace to a prefix in the XPath evaluation context\n"); + fprintf(ctxt->output, "\t format for nsreg is: prefix=[nsuri] (i.e. prefix= unsets a prefix)\n"); + fprintf(ctxt->output, "\tsetrootns register all namespace found on the root element\n"); + fprintf(ctxt->output, "\t the default namespace if any uses 'defaultns' prefix\n"); +#endif /* LIBXML_XPATH_ENABLED */ + fprintf(ctxt->output, "\tpwd display current working directory\n"); + fprintf(ctxt->output, "\tquit leave shell\n"); +#ifdef LIBXML_OUTPUT_ENABLED + fprintf(ctxt->output, "\tsave [name] save this document to name or the original name\n"); + fprintf(ctxt->output, "\twrite [name] write the current node to the filename\n"); +#endif /* LIBXML_OUTPUT_ENABLED */ +#ifdef LIBXML_VALID_ENABLED + fprintf(ctxt->output, "\tvalidate check the document for errors\n"); +#endif /* LIBXML_VALID_ENABLED */ +#ifdef LIBXML_SCHEMAS_ENABLED + fprintf(ctxt->output, "\trelaxng rng validate the document agaisnt the Relax-NG schemas\n"); +#endif + fprintf(ctxt->output, "\tgrep string search for a string in the subtree\n"); +#ifdef LIBXML_VALID_ENABLED + } else if (!strcmp(command, "validate")) { + xmlShellValidate(ctxt, arg, NULL, NULL); +#endif /* LIBXML_VALID_ENABLED */ + } else if (!strcmp(command, "load")) { + xmlShellLoad(ctxt, arg, NULL, NULL); +#ifdef LIBXML_SCHEMAS_ENABLED + } else if (!strcmp(command, "relaxng")) { + xmlShellRNGValidate(ctxt, arg, NULL, NULL); +#endif +#ifdef LIBXML_OUTPUT_ENABLED + } else if (!strcmp(command, "save")) { + xmlShellSave(ctxt, arg, NULL, NULL); + } else if (!strcmp(command, "write")) { + if ((arg == NULL) || (arg[0] == 0)) + xmlGenericError(xmlGenericErrorContext, + "Write command requires a filename argument\n"); + else + xmlShellWrite(ctxt, arg, NULL, NULL); +#endif /* LIBXML_OUTPUT_ENABLED */ + } else if (!strcmp(command, "grep")) { + xmlShellGrep(ctxt, arg, ctxt->node, NULL); + } else if (!strcmp(command, "free")) { + if (arg[0] == 0) { + xmlMemShow(ctxt->output, 0); + } else { + int len = 0; + + sscanf(arg, "%d", &len); + xmlMemShow(ctxt->output, len); + } + } else if (!strcmp(command, "pwd")) { + char dir[500]; + + if (!xmlShellPwd(ctxt, dir, ctxt->node, NULL)) + fprintf(ctxt->output, "%s\n", dir); + } else if (!strcmp(command, "du")) { + xmlShellDu(ctxt, NULL, ctxt->node, NULL); + } else if (!strcmp(command, "base")) { + xmlShellBase(ctxt, NULL, ctxt->node, NULL); + } else if (!strcmp(command, "set")) { + xmlShellSetContent(ctxt, arg, ctxt->node, NULL); +#ifdef LIBXML_XPATH_ENABLED + } else if (!strcmp(command, "setns")) { + if (arg[0] == 0) { + xmlGenericError(xmlGenericErrorContext, + "setns: prefix=[nsuri] required\n"); + } else { + xmlShellRegisterNamespace(ctxt, arg, NULL, NULL); + } + } else if (!strcmp(command, "setrootns")) { + xmlNodePtr root; + + root = xmlDocGetRootElement(ctxt->doc); + xmlShellRegisterRootNamespaces(ctxt, NULL, root, NULL); + } else if (!strcmp(command, "xpath")) { + if (arg[0] == 0) { + xmlGenericError(xmlGenericErrorContext, + "xpath: expression required\n"); + } else { + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); + xmlXPathDebugDumpObject(ctxt->output, list, 0); + xmlXPathFreeObject(list); + } +#endif /* LIBXML_XPATH_ENABLED */ +#ifdef LIBXML_TREE_ENABLED + } else if (!strcmp(command, "setbase")) { + xmlShellSetBase(ctxt, arg, ctxt->node, NULL); +#endif + } else if ((!strcmp(command, "ls")) || (!strcmp(command, "dir"))) { + int dir = (!strcmp(command, "dir")); + + if (arg[0] == 0) { + if (dir) + xmlShellDir(ctxt, NULL, ctxt->node, NULL); + else + xmlShellList(ctxt, NULL, ctxt->node, NULL); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) { + if (dir) + xmlShellDir(ctxt, NULL, + list->nodesetval-> + nodeTab[indx], NULL); + else + xmlShellList(ctxt, NULL, + list->nodesetval-> + nodeTab[indx], NULL); + } + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } + } else if (!strcmp(command, "cd")) { + if (arg[0] == 0) { + ctxt->node = (xmlNodePtr) ctxt->doc; + } else { +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET: + if (list->nodesetval != NULL) { + if (list->nodesetval->nodeNr == 1) { + ctxt->node = list->nodesetval->nodeTab[0]; + if ((ctxt->node != NULL) && + (ctxt->node->type == + XML_NAMESPACE_DECL)) { + xmlGenericError(xmlGenericErrorContext, + "cannot cd to namespace\n"); + ctxt->node = NULL; + } + } else + xmlGenericError(xmlGenericErrorContext, + "%s is a %d Node Set\n", + arg, + list->nodesetval->nodeNr); + } else + xmlGenericError(xmlGenericErrorContext, + "%s is an empty Node Set\n", + arg); + break; + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } +#ifdef LIBXML_OUTPUT_ENABLED + } else if (!strcmp(command, "cat")) { + if (arg[0] == 0) { + xmlShellCat(ctxt, NULL, ctxt->node, NULL); + } else { + ctxt->pctxt->node = ctxt->node; +#ifdef LIBXML_XPATH_ENABLED + ctxt->pctxt->node = ctxt->node; + list = xmlXPathEval((xmlChar *) arg, ctxt->pctxt); +#else + list = NULL; +#endif /* LIBXML_XPATH_ENABLED */ + if (list != NULL) { + switch (list->type) { + case XPATH_UNDEFINED: + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + break; + case XPATH_NODESET:{ + int indx; + + if (list->nodesetval == NULL) + break; + + for (indx = 0; + indx < list->nodesetval->nodeNr; + indx++) { + if (i > 0) + fprintf(ctxt->output, " -------\n"); + xmlShellCat(ctxt, NULL, + list->nodesetval-> + nodeTab[indx], NULL); + } + break; + } + case XPATH_BOOLEAN: + xmlGenericError(xmlGenericErrorContext, + "%s is a Boolean\n", arg); + break; + case XPATH_NUMBER: + xmlGenericError(xmlGenericErrorContext, + "%s is a number\n", arg); + break; + case XPATH_STRING: + xmlGenericError(xmlGenericErrorContext, + "%s is a string\n", arg); + break; + case XPATH_POINT: + xmlGenericError(xmlGenericErrorContext, + "%s is a point\n", arg); + break; + case XPATH_RANGE: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_LOCATIONSET: + xmlGenericError(xmlGenericErrorContext, + "%s is a range\n", arg); + break; + case XPATH_USERS: + xmlGenericError(xmlGenericErrorContext, + "%s is user-defined\n", arg); + break; + case XPATH_XSLT_TREE: + xmlGenericError(xmlGenericErrorContext, + "%s is an XSLT value tree\n", + arg); + break; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeObject(list); +#endif + } else { + xmlGenericError(xmlGenericErrorContext, + "%s: no such node\n", arg); + } + ctxt->pctxt->node = NULL; + } +#endif /* LIBXML_OUTPUT_ENABLED */ + } else { + xmlGenericError(xmlGenericErrorContext, + "Unknown command %s\n", command); + } + free(cmdline); /* not xmlFree here ! */ + cmdline = NULL; + } +#ifdef LIBXML_XPATH_ENABLED + xmlXPathFreeContext(ctxt->pctxt); +#endif /* LIBXML_XPATH_ENABLED */ + if (ctxt->loaded) { + xmlFreeDoc(ctxt->doc); + } + if (ctxt->filename != NULL) + xmlFree(ctxt->filename); + xmlFree(ctxt); + if (cmdline != NULL) + free(cmdline); /* not xmlFree here ! */ +} + +#endif /* LIBXML_XPATH_ENABLED */ +#define bottom_debugXML +#include "elfgcchack.h" +#endif /* LIBXML_DEBUG_ENABLED */
diff --git a/libxml2-2.7.7/depcomp b/libxml2-2.7.7/depcomp new file mode 100755 index 0000000..df8eea7 --- /dev/null +++ b/libxml2-2.7.7/depcomp
@@ -0,0 +1,630 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End:
diff --git a/libxml2-2.7.7/dict.c b/libxml2-2.7.7/dict.c new file mode 100644 index 0000000..3eff231 --- /dev/null +++ b/libxml2-2.7.7/dict.c
@@ -0,0 +1,1100 @@ +/* + * dict.c: dictionary of reusable strings, just used to avoid allocation + * and freeing operations. + * + * Copyright (C) 2003 Daniel Veillard. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND + * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + * + * Author: daniel@veillard.com + */ + +#define IN_LIBXML +#include "libxml.h" + +#include <string.h> +#ifdef HAVE_STDINT_H +#include <stdint.h> +#else +#ifdef HAVE_INTTYPES_H +#include <inttypes.h> +#elif defined(WIN32) +typedef unsigned __int32 uint32_t; +#endif +#endif +#include <libxml/tree.h> +#include <libxml/dict.h> +#include <libxml/xmlmemory.h> +#include <libxml/xmlerror.h> +#include <libxml/globals.h> + +/* #define DEBUG_GROW */ +/* #define DICT_DEBUG_PATTERNS */ + +#define MAX_HASH_LEN 3 +#define MIN_DICT_SIZE 128 +#define MAX_DICT_HASH 8 * 2048 +#define WITH_BIG_KEY + +#ifdef WITH_BIG_KEY +#define xmlDictComputeKey(dict, name, len) \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastKey(name, len) : \ + xmlDictComputeBigKey(name, len)) + +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + (((prefix) == NULL) ? \ + (xmlDictComputeKey(dict, name, len)) : \ + (((dict)->size == MIN_DICT_SIZE) ? \ + xmlDictComputeFastQKey(prefix, plen, name, len) : \ + xmlDictComputeBigQKey(prefix, plen, name, len))) + +#else /* !WITH_BIG_KEY */ +#define xmlDictComputeKey(dict, name, len) \ + xmlDictComputeFastKey(name, len) +#define xmlDictComputeQKey(dict, prefix, plen, name, len) \ + xmlDictComputeFastQKey(prefix, plen, name, len) +#endif /* WITH_BIG_KEY */ + +/* + * An entry in the dictionnary + */ +typedef struct _xmlDictEntry xmlDictEntry; +typedef xmlDictEntry *xmlDictEntryPtr; +struct _xmlDictEntry { + struct _xmlDictEntry *next; + const xmlChar *name; + int len; + int valid; + unsigned long okey; +}; + +typedef struct _xmlDictStrings xmlDictStrings; +typedef xmlDictStrings *xmlDictStringsPtr; +struct _xmlDictStrings { + xmlDictStringsPtr next; + xmlChar *free; + xmlChar *end; + int size; + int nbStrings; + xmlChar array[1]; +}; +/* + * The entire dictionnary + */ +struct _xmlDict { + int ref_counter; + + struct _xmlDictEntry *dict; + int size; + int nbElems; + xmlDictStringsPtr strings; + + struct _xmlDict *subdict; +}; + +/* + * A mutex for modifying the reference counter for shared + * dictionaries. + */ +static xmlRMutexPtr xmlDictMutex = NULL; + +/* + * Whether the dictionary mutex was initialized. + */ +static int xmlDictInitialized = 0; + +/** + * xmlInitializeDict: + * + * Do the dictionary mutex initialization. + * this function is not thread safe, initialization should + * preferably be done once at startup + */ +static int xmlInitializeDict(void) { + if (xmlDictInitialized) + return(1); + + if ((xmlDictMutex = xmlNewRMutex()) == NULL) + return(0); + + xmlDictInitialized = 1; + return(1); +} + +/** + * xmlDictCleanup: + * + * Free the dictionary mutex. + */ +void +xmlDictCleanup(void) { + if (!xmlDictInitialized) + return; + + xmlFreeRMutex(xmlDictMutex); + + xmlDictInitialized = 0; +} + +/* + * xmlDictAddString: + * @dict: the dictionnary + * @name: the name of the userdata + * @len: the length of the name, if -1 it is recomputed + * + * Add the string to the array[s] + * + * Returns the pointer of the local string, or NULL in case of error. + */ +static const xmlChar * +xmlDictAddString(xmlDictPtr dict, const xmlChar *name, int namelen) { + xmlDictStringsPtr pool; + const xmlChar *ret; + int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "-"); +#endif + pool = dict->strings; + while (pool != NULL) { + if (pool->end - pool->free > namelen) + goto found_pool; + if (pool->size > size) size = pool->size; + pool = pool->next; + } + /* + * Not found, need to allocate + */ + if (pool == NULL) { + if (size == 0) size = 1000; + else size *= 4; /* exponential growth */ + if (size < 4 * namelen) + size = 4 * namelen; /* just in case ! */ + pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); + if (pool == NULL) + return(NULL); + pool->size = size; + pool->nbStrings = 0; + pool->free = &pool->array[0]; + pool->end = &pool->array[size]; + pool->next = dict->strings; + dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif + } +found_pool: + ret = pool->free; + memcpy(pool->free, name, namelen); + pool->free += namelen; + *(pool->free++) = 0; + pool->nbStrings++; + return(ret); +} + +/* + * xmlDictAddQString: + * @dict: the dictionnary + * @prefix: the prefix of the userdata + * @plen: the prefix length + * @name: the name of the userdata + * @len: the length of the name, if -1 it is recomputed + * + * Add the QName to the array[s] + * + * Returns the pointer of the local string, or NULL in case of error. + */ +static const xmlChar * +xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, int plen, + const xmlChar *name, int namelen) +{ + xmlDictStringsPtr pool; + const xmlChar *ret; + int size = 0; /* + sizeof(_xmlDictStrings) == 1024 */ + + if (prefix == NULL) return(xmlDictAddString(dict, name, namelen)); + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "="); +#endif + pool = dict->strings; + while (pool != NULL) { + if (pool->end - pool->free > namelen + plen + 1) + goto found_pool; + if (pool->size > size) size = pool->size; + pool = pool->next; + } + /* + * Not found, need to allocate + */ + if (pool == NULL) { + if (size == 0) size = 1000; + else size *= 4; /* exponential growth */ + if (size < 4 * (namelen + plen + 1)) + size = 4 * (namelen + plen + 1); /* just in case ! */ + pool = (xmlDictStringsPtr) xmlMalloc(sizeof(xmlDictStrings) + size); + if (pool == NULL) + return(NULL); + pool->size = size; + pool->nbStrings = 0; + pool->free = &pool->array[0]; + pool->end = &pool->array[size]; + pool->next = dict->strings; + dict->strings = pool; +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "+"); +#endif + } +found_pool: + ret = pool->free; + memcpy(pool->free, prefix, plen); + pool->free += plen; + *(pool->free++) = ':'; + memcpy(pool->free, name, namelen); + pool->free += namelen; + *(pool->free++) = 0; + pool->nbStrings++; + return(ret); +} + +#ifdef WITH_BIG_KEY +/* + * xmlDictComputeBigKey: + * + * Calculate a hash key using a good hash function that works well for + * larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + */ + +static uint32_t +xmlDictComputeBigKey(const xmlChar* data, int namelen) { + uint32_t hash; + int i; + + if (namelen <= 0 || data == NULL) return(0); + + hash = 0; + + for (i = 0;i < namelen; i++) { + hash += data[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} + +/* + * xmlDictComputeBigQKey: + * + * Calculate a hash key for two strings using a good hash function + * that works well for larger hash table sizes. + * + * Hash function by "One-at-a-Time Hash" see + * http://burtleburtle.net/bob/hash/doobs.html + * + * Neither of the two strings must be NULL. + */ +static unsigned long +xmlDictComputeBigQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len) +{ + uint32_t hash; + int i; + + hash = 0; + + for (i = 0;i < plen; i++) { + hash += prefix[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += ':'; + hash += (hash << 10); + hash ^= (hash >> 6); + + for (i = 0;i < len; i++) { + hash += name[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + + return hash; +} +#endif /* WITH_BIG_KEY */ + +/* + * xmlDictComputeFastKey: + * + * Calculate a hash key using a fast hash function that works well + * for low hash table fill. + */ +static unsigned long +xmlDictComputeFastKey(const xmlChar *name, int namelen) { + unsigned long value = 0L; + + if (name == NULL) return(0); + value = *name; + value <<= 5; + if (namelen > 10) { + value += name[namelen - 1]; + namelen = 10; + } + switch (namelen) { + case 10: value += name[9]; + case 9: value += name[8]; + case 8: value += name[7]; + case 7: value += name[6]; + case 6: value += name[5]; + case 5: value += name[4]; + case 4: value += name[3]; + case 3: value += name[2]; + case 2: value += name[1]; + default: break; + } + return(value); +} + +/* + * xmlDictComputeFastQKey: + * + * Calculate a hash key for two strings using a fast hash function + * that works well for low hash table fill. + * + * Neither of the two strings must be NULL. + */ +static unsigned long +xmlDictComputeFastQKey(const xmlChar *prefix, int plen, + const xmlChar *name, int len) +{ + unsigned long value = 0L; + + if (plen == 0) + value += 30 * (unsigned long) ':'; + else + value += 30 * (*prefix); + + if (len > 10) { + value += name[len - (plen + 1 + 1)]; + len = 10; + if (plen > 10) + plen = 10; + } + switch (plen) { + case 10: value += prefix[9]; + case 9: value += prefix[8]; + case 8: value += prefix[7]; + case 7: value += prefix[6]; + case 6: value += prefix[5]; + case 5: value += prefix[4]; + case 4: value += prefix[3]; + case 3: value += prefix[2]; + case 2: value += prefix[1]; + case 1: value += prefix[0]; + default: break; + } + len -= plen; + if (len > 0) { + value += (unsigned long) ':'; + len--; + } + switch (len) { + case 10: value += name[9]; + case 9: value += name[8]; + case 8: value += name[7]; + case 7: value += name[6]; + case 6: value += name[5]; + case 5: value += name[4]; + case 4: value += name[3]; + case 3: value += name[2]; + case 2: value += name[1]; + case 1: value += name[0]; + default: break; + } + return(value); +} + +/** + * xmlDictCreate: + * + * Create a new dictionary + * + * Returns the newly created dictionnary, or NULL if an error occured. + */ +xmlDictPtr +xmlDictCreate(void) { + xmlDictPtr dict; + + if (!xmlDictInitialized) + if (!xmlInitializeDict()) + return(NULL); + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "C"); +#endif + + dict = xmlMalloc(sizeof(xmlDict)); + if (dict) { + dict->ref_counter = 1; + + dict->size = MIN_DICT_SIZE; + dict->nbElems = 0; + dict->dict = xmlMalloc(MIN_DICT_SIZE * sizeof(xmlDictEntry)); + dict->strings = NULL; + dict->subdict = NULL; + if (dict->dict) { + memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); + return(dict); + } + xmlFree(dict); + } + return(NULL); +} + +/** + * xmlDictCreateSub: + * @sub: an existing dictionnary + * + * Create a new dictionary, inheriting strings from the read-only + * dictionnary @sub. On lookup, strings are first searched in the + * new dictionnary, then in @sub, and if not found are created in the + * new dictionnary. + * + * Returns the newly created dictionnary, or NULL if an error occured. + */ +xmlDictPtr +xmlDictCreateSub(xmlDictPtr sub) { + xmlDictPtr dict = xmlDictCreate(); + + if ((dict != NULL) && (sub != NULL)) { +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "R"); +#endif + dict->subdict = sub; + xmlDictReference(dict->subdict); + } + return(dict); +} + +/** + * xmlDictReference: + * @dict: the dictionnary + * + * Increment the reference counter of a dictionary + * + * Returns 0 in case of success and -1 in case of error + */ +int +xmlDictReference(xmlDictPtr dict) { + if (!xmlDictInitialized) + if (!xmlInitializeDict()) + return(-1); + + if (dict == NULL) return -1; + xmlRMutexLock(xmlDictMutex); + dict->ref_counter++; + xmlRMutexUnlock(xmlDictMutex); + return(0); +} + +/** + * xmlDictGrow: + * @dict: the dictionnary + * @size: the new size of the dictionnary + * + * resize the dictionnary + * + * Returns 0 in case of success, -1 in case of failure + */ +static int +xmlDictGrow(xmlDictPtr dict, int size) { + unsigned long key, okey; + int oldsize, i; + xmlDictEntryPtr iter, next; + struct _xmlDictEntry *olddict; +#ifdef DEBUG_GROW + unsigned long nbElem = 0; +#endif + int ret = 0; + int keep_keys = 1; + + if (dict == NULL) + return(-1); + if (size < 8) + return(-1); + if (size > 8 * 2048) + return(-1); + +#ifdef DICT_DEBUG_PATTERNS + fprintf(stderr, "*"); +#endif + + oldsize = dict->size; + olddict = dict->dict; + if (olddict == NULL) + return(-1); + if (oldsize == MIN_DICT_SIZE) + keep_keys = 0; + + dict->dict = xmlMalloc(size * sizeof(xmlDictEntry)); + if (dict->dict == NULL) { + dict->dict = olddict; + return(-1); + } + memset(dict->dict, 0, size * sizeof(xmlDictEntry)); + dict->size = size; + + /* If the two loops are merged, there would be situations where + a new entry needs to allocated and data copied into it from + the main dict. It is nicer to run through the array twice, first + copying all the elements in the main array (less probability of + allocate) and then the rest, so we only free in the second loop. + */ + for (i = 0; i < oldsize; i++) { + if (olddict[i].valid == 0) + continue; + + if (keep_keys) + okey = olddict[i].okey; + else + okey = xmlDictComputeKey(dict, olddict[i].name, olddict[i].len); + key = okey % dict->size; + + if (dict->dict[key].valid == 0) { + memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); + dict->dict[key].next = NULL; + dict->dict[key].okey = okey; + } else { + xmlDictEntryPtr entry; + + entry = xmlMalloc(sizeof(xmlDictEntry)); + if (entry != NULL) { + entry->name = olddict[i].name; + entry->len = olddict[i].len; + entry->okey = okey; + entry->next = dict->dict[key].next; + entry->valid = 1; + dict->dict[key].next = entry; + } else { + /* + * we don't have much ways to alert from herei + * result is loosing an entry and unicity garantee + */ + ret = -1; + } + } +#ifdef DEBUG_GROW + nbElem++; +#endif + } + + for (i = 0; i < oldsize; i++) { + iter = olddict[i].next; + while (iter) { + next = iter->next; + + /* + * put back the entry in the new dict + */ + + if (keep_keys) + okey = iter->okey; + else + okey = xmlDictComputeKey(dict, iter->name, iter->len); + key = okey % dict->size; + if (dict->dict[key].valid == 0) { + memcpy(&(dict->dict[key]), iter, sizeof(xmlDictEntry)); + dict->dict[key].next = NULL; + dict->dict[key].valid = 1; + dict->dict[key].okey = okey; + xmlFree(iter); + } else { + iter->next = dict->dict[key].next; + iter->okey = okey; + dict->dict[key].next = iter; + } + +#ifdef DEBUG_GROW + nbElem++; +#endif + + iter = next; + } + } + + xmlFree(olddict); + +#ifdef DEBUG_GROW + xmlGenericError(xmlGenericErrorContext, + "xmlDictGrow : from %d to %d, %d elems\n", oldsize, size, nbElem); +#endif + + return(ret); +} + +/** + * xmlDictFree: + * @dict: the dictionnary + * + * Free the hash @dict and its contents. The userdata is + * deallocated with @f if provided. + */ +void +xmlDictFree(xmlDictPtr dict) { + int i; + xmlDictEntryPtr iter; + xmlDictEntryPtr next; + int inside_dict = 0; + xmlDictStringsPtr pool, nextp; + + if (dict == NULL) + return; + + if (!xmlDictInitialized) + if (!xmlInitializeDict()) + return; + + /* decrement the counter, it may be shared by a parser and docs */ + xmlRMutexLock(xmlDictMutex); + dict->ref_counter--; + if (dict->ref_counter > 0) { + xmlRMutexUnlock(xmlDictMutex); + return; + } + + xmlRMutexUnlock(xmlDictMutex); + + if (dict->subdict != NULL) { + xmlDictFree(dict->subdict); + } + + if (dict->dict) { + for(i = 0; ((i < dict->size) && (dict->nbElems > 0)); i++) { + iter = &(dict->dict[i]); + if (iter->valid == 0) + continue; + inside_dict = 1; + while (iter) { + next = iter->next; + if (!inside_dict) + xmlFree(iter); + dict->nbElems--; + inside_dict = 0; + iter = next; + } + } + xmlFree(dict->dict); + } + pool = dict->strings; + while (pool != NULL) { + nextp = pool->next; + xmlFree(pool); + pool = nextp; + } + xmlFree(dict); +} + +/** + * xmlDictLookup: + * @dict: the dictionnary + * @name: the name of the userdata + * @len: the length of the name, if -1 it is recomputed + * + * Add the @name to the dictionnary @dict if not present. + * + * Returns the internal copy of the name or NULL in case of internal error + */ +const xmlChar * +xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) { + unsigned long key, okey, nbi = 0; + xmlDictEntryPtr entry; + xmlDictEntryPtr insert; + const xmlChar *ret; + + if ((dict == NULL) || (name == NULL)) + return(NULL); + + if (len < 0) + len = strlen((const char *) name); + + /* + * Check for duplicate and insertion location. + */ + okey = xmlDictComputeKey(dict, name, len); + key = okey % dict->size; + if (dict->dict[key].valid == 0) { + insert = NULL; + } else { + for (insert = &(dict->dict[key]); insert->next != NULL; + insert = insert->next) { +#ifdef __GNUC__ + if ((insert->okey == okey) && (insert->len == len)) { + if (!memcmp(insert->name, name, len)) + return(insert->name); + } +#else + if ((insert->okey == okey) && (insert->len == len) && + (!xmlStrncmp(insert->name, name, len))) + return(insert->name); +#endif + nbi++; + } +#ifdef __GNUC__ + if ((insert->okey == okey) && (insert->len == len)) { + if (!memcmp(insert->name, name, len)) + return(insert->name); + } +#else + if ((insert->okey == okey) && (insert->len == len) && + (!xmlStrncmp(insert->name, name, len))) + return(insert->name); +#endif + } + + if (dict->subdict) { + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, len); + else + skey = okey; + + key = skey % dict->subdict->size; + if (dict->subdict->dict[key].valid != 0) { + xmlDictEntryPtr tmp; + + for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; + tmp = tmp->next) { +#ifdef __GNUC__ + if ((tmp->okey == skey) && (tmp->len == len)) { + if (!memcmp(tmp->name, name, len)) + return(tmp->name); + } +#else + if ((tmp->okey == skey) && (tmp->len == len) && + (!xmlStrncmp(tmp->name, name, len))) + return(tmp->name); +#endif + nbi++; + } +#ifdef __GNUC__ + if ((tmp->okey == skey) && (tmp->len == len)) { + if (!memcmp(tmp->name, name, len)) + return(tmp->name); + } +#else + if ((tmp->okey == skey) && (tmp->len == len) && + (!xmlStrncmp(tmp->name, name, len))) + return(tmp->name); +#endif + } + key = okey % dict->size; + } + + ret = xmlDictAddString(dict, name, len); + if (ret == NULL) + return(NULL); + if (insert == NULL) { + entry = &(dict->dict[key]); + } else { + entry = xmlMalloc(sizeof(xmlDictEntry)); + if (entry == NULL) + return(NULL); + } + entry->name = ret; + entry->len = len; + entry->next = NULL; + entry->valid = 1; + entry->okey = okey; + + + if (insert != NULL) + insert->next = entry; + + dict->nbElems++; + + if ((nbi > MAX_HASH_LEN) && + (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) { + if (xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size) != 0) + return(NULL); + } + /* Note that entry may have been freed at this point by xmlDictGrow */ + + return(ret); +} + +/** + * xmlDictExists: + * @dict: the dictionnary + * @name: the name of the userdata + * @len: the length of the name, if -1 it is recomputed + * + * Check if the @name exists in the dictionnary @dict. + * + * Returns the internal copy of the name or NULL if not found. + */ +const xmlChar * +xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) { + unsigned long key, okey, nbi = 0; + xmlDictEntryPtr insert; + + if ((dict == NULL) || (name == NULL)) + return(NULL); + + if (len < 0) + len = strlen((const char *) name); + + /* + * Check for duplicate and insertion location. + */ + okey = xmlDictComputeKey(dict, name, len); + key = okey % dict->size; + if (dict->dict[key].valid == 0) { + insert = NULL; + } else { + for (insert = &(dict->dict[key]); insert->next != NULL; + insert = insert->next) { +#ifdef __GNUC__ + if ((insert->okey == okey) && (insert->len == len)) { + if (!memcmp(insert->name, name, len)) + return(insert->name); + } +#else + if ((insert->okey == okey) && (insert->len == len) && + (!xmlStrncmp(insert->name, name, len))) + return(insert->name); +#endif + nbi++; + } +#ifdef __GNUC__ + if ((insert->okey == okey) && (insert->len == len)) { + if (!memcmp(insert->name, name, len)) + return(insert->name); + } +#else + if ((insert->okey == okey) && (insert->len == len) && + (!xmlStrncmp(insert->name, name, len))) + return(insert->name); +#endif + } + + if (dict->subdict) { + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeKey(dict->subdict, name, len); + else + skey = okey; + + key = skey % dict->subdict->size; + if (dict->subdict->dict[key].valid != 0) { + xmlDictEntryPtr tmp; + + for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; + tmp = tmp->next) { +#ifdef __GNUC__ + if ((tmp->okey == skey) && (tmp->len == len)) { + if (!memcmp(tmp->name, name, len)) + return(tmp->name); + } +#else + if ((tmp->okey == skey) && (tmp->len == len) && + (!xmlStrncmp(tmp->name, name, len))) + return(tmp->name); +#endif + nbi++; + } +#ifdef __GNUC__ + if ((tmp->okey == skey) && (tmp->len == len)) { + if (!memcmp(tmp->name, name, len)) + return(tmp->name); + } +#else + if ((tmp->okey == skey) && (tmp->len == len) && + (!xmlStrncmp(tmp->name, name, len))) + return(tmp->name); +#endif + } + } + + /* not found */ + return(NULL); +} + +/** + * xmlDictQLookup: + * @dict: the dictionnary + * @prefix: the prefix + * @name: the name + * + * Add the QName @prefix:@name to the hash @dict if not present. + * + * Returns the internal copy of the QName or NULL in case of internal error + */ +const xmlChar * +xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) { + unsigned long okey, key, nbi = 0; + xmlDictEntryPtr entry; + xmlDictEntryPtr insert; + const xmlChar *ret; + int len, plen, l; + + if ((dict == NULL) || (name == NULL)) + return(NULL); + if (prefix == NULL) + return(xmlDictLookup(dict, name, -1)); + + l = len = strlen((const char *) name); + plen = strlen((const char *) prefix); + len += 1 + plen; + + /* + * Check for duplicate and insertion location. + */ + okey = xmlDictComputeQKey(dict, prefix, plen, name, l); + key = okey % dict->size; + if (dict->dict[key].valid == 0) { + insert = NULL; + } else { + for (insert = &(dict->dict[key]); insert->next != NULL; + insert = insert->next) { + if ((insert->okey == okey) && (insert->len == len) && + (xmlStrQEqual(prefix, name, insert->name))) + return(insert->name); + nbi++; + } + if ((insert->okey == okey) && (insert->len == len) && + (xmlStrQEqual(prefix, name, insert->name))) + return(insert->name); + } + + if (dict->subdict) { + unsigned long skey; + + /* we cannot always reuse the same okey for the subdict */ + if (((dict->size == MIN_DICT_SIZE) && + (dict->subdict->size != MIN_DICT_SIZE)) || + ((dict->size != MIN_DICT_SIZE) && + (dict->subdict->size == MIN_DICT_SIZE))) + skey = xmlDictComputeQKey(dict->subdict, prefix, plen, name, l); + else + skey = okey; + + key = skey % dict->subdict->size; + if (dict->subdict->dict[key].valid != 0) { + xmlDictEntryPtr tmp; + for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; + tmp = tmp->next) { + if ((tmp->okey == skey) && (tmp->len == len) && + (xmlStrQEqual(prefix, name, tmp->name))) + return(tmp->name); + nbi++; + } + if ((tmp->okey == skey) && (tmp->len == len) && + (xmlStrQEqual(prefix, name, tmp->name))) + return(tmp->name); + } + key = okey % dict->size; + } + + ret = xmlDictAddQString(dict, prefix, plen, name, l); + if (ret == NULL) + return(NULL); + if (insert == NULL) { + entry = &(dict->dict[key]); + } else { + entry = xmlMalloc(sizeof(xmlDictEntry)); + if (entry == NULL) + return(NULL); + } + entry->name = ret; + entry->len = len; + entry->next = NULL; + entry->valid = 1; + entry->okey = okey; + + if (insert != NULL) + insert->next = entry; + + dict->nbElems++; + + if ((nbi > MAX_HASH_LEN) && + (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) + xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size); + /* Note that entry may have been freed at this point by xmlDictGrow */ + + return(ret); +} + +/** + * xmlDictOwns: + * @dict: the dictionnary + * @str: the string + * + * check if a string is owned by the disctionary + * + * Returns 1 if true, 0 if false and -1 in case of error + * -1 in case of error + */ +int +xmlDictOwns(xmlDictPtr dict, const xmlChar *str) { + xmlDictStringsPtr pool; + + if ((dict == NULL) || (str == NULL)) + return(-1); + pool = dict->strings; + while (pool != NULL) { + if ((str >= &pool->array[0]) && (str <= pool->free)) + return(1); + pool = pool->next; + } + if (dict->subdict) + return(xmlDictOwns(dict->subdict, str)); + return(0); +} + +/** + * xmlDictSize: + * @dict: the dictionnary + * + * Query the number of elements installed in the hash @dict. + * + * Returns the number of elements in the dictionnary or + * -1 in case of error + */ +int +xmlDictSize(xmlDictPtr dict) { + if (dict == NULL) + return(-1); + if (dict->subdict) + return(dict->nbElems + dict->subdict->nbElems); + return(dict->nbElems); +} + + +#define bottom_dict +#include "elfgcchack.h"
diff --git a/libxml2-2.7.7/doc/APIchunk0.html b/libxml2-2.7.7/doc/APIchunk0.html new file mode 100644 index 0000000..e116c35 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk0.html
@@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index A-B for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index A-B for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter A:</h2><dl><dt>A-Z</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +</dd><dt>A-Za-z</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncName">xmlParseEncName</a><br /> +</dd><dt>A-Za-z0-9</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncName">xmlParseEncName</a><br /> +</dd><dt>ABC</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>ABI</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +</dd><dt>ALL</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +</dd><dt>ANY</dt><dd><a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +</dd><dt>APIs</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br /> +</dd><dt>ARRAY</dt><dd><a href="html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +</dd><dt>ASCII</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +</dd><dt>ATTLIST</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterStartDTDAttlist">xmlTextWriterStartDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterStartDTDEntity">xmlTextWriterStartDTDEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDAttlist">xmlTextWriterWriteDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTDAttlist">xmlTextWriterWriteFormatDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDAttlist">xmlTextWriterWriteVFormatDTDAttlist</a><br /> +</dd><dt>ATTRIBUTE</dt><dd><a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +</dd><dt>Absolute</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +</dd><dt>Accessor</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsBoolean">xmlSchemaValueGetAsBoolean</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsString">xmlSchemaValueGetAsString</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br /> +</dd><dt>Activation</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +</dd><dt>Actually</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +</dd><dt>Add</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddChildList">xmlAddChildList</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br /> +<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> +<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAddLocal">xmlCatalogAddLocal</a><br /> +<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br /> +<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +</dd><dt>Additional</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-globals.html#xmlCleanupGlobals">xmlCleanupGlobals</a><br /> +<a href="html/libxml-globals.html#xmlInitGlobals">xmlInitGlobals</a><br /> +</dd><dt>AegeanNumbers</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsAegeanNumbers">xmlUCSIsAegeanNumbers</a><br /> +</dd><dt>All</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br /> +</dd><dt>Allocate</dt><dd><a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPNewCtxt">xmlNanoFTPNewCtxt</a><br /> +<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br /> +<a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br /> +<a href="html/libxml-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a><br /> +<a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewFacet">xmlSchemaNewFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewQNameValue">xmlSchemaNewQNameValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +</dd><dt>Allocates</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br /> +</dd><dt>Allows</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +</dd><dt>AlphabeticPresentationForms</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsAlphabeticPresentationForms">xmlUCSIsAlphabeticPresentationForms</a><br /> +</dd><dt>Also</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +</dd><dt>Always</dt><dd><a href="html/libxml-parserInternals.html#IS_COMBINING_CH">IS_COMBINING_CH</a><br /> +</dd><dt>Append</dt><dd><a href="html/libxml-tree.html#xmlBufferCCat">xmlBufferCCat</a><br /> +<a href="html/libxml-tree.html#xmlBufferCat">xmlBufferCat</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br /> +</dd><dt>Appendix</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> +</dd><dt>Appends</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br /> +</dd><dt>Applies</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a><br /> +<a href="html/libxml-parser.html#xmlCtxtUseOptions">xmlCtxtUseOptions</a><br /> +<a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCompiledEvalToBoolean">xmlXPathCompiledEvalToBoolean</a><br /> +</dd><dt>Apply</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a><br /> +</dd><dt>Arabic</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsArabic">xmlUCSIsArabic</a><br /> +</dd><dt>ArabicPresentationForms-A</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsArabicPresentationFormsA">xmlUCSIsArabicPresentationFormsA</a><br /> +</dd><dt>ArabicPresentationForms-B</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsArabicPresentationFormsB">xmlUCSIsArabicPresentationFormsB</a><br /> +</dd><dt>Armenian</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsArmenian">xmlUCSIsArmenian</a><br /> +</dd><dt>Array</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>Arrows</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsArrows">xmlUCSIsArrows</a><br /> +</dd><dt>Associate</dt><dd><a href="html/libxml-tree.html#xmlSetNs">xmlSetNs</a><br /> +</dd><dt>Att</dt><dd><a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>AttDef</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +</dd><dt>AttType</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +</dd><dt>AttValue</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +</dd><dt>AttlistDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>Attribute</dt><dd><a href="html/libxml-tree.html#_xmlAttribute">_xmlAttribute</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsDefault">xmlTextReaderIsDefault</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderMoveToElement">xmlTextReaderMoveToElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +</dd><dt>Attribute-Value</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +</dd><dt>Attributes</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br /> +</dd><dt>Automatic</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlParseFile">xmlParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseFile">xmlSAXUserParseFile</a><br /> +</dd><dt>Automatically</dt><dd><a href="html/libxml-chvalid.html#xmlIsBaseCharQ">xmlIsBaseCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlankQ">xmlIsBlankQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlank_ch">xmlIsBlank_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCharQ">xmlIsCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsChar_ch">xmlIsChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCombiningQ">xmlIsCombiningQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigitQ">xmlIsDigitQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigit_ch">xmlIsDigit_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtenderQ">xmlIsExtenderQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtender_ch">xmlIsExtender_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsIdeographicQ">xmlIsIdeographicQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidCharQ">xmlIsPubidCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a><br /> +</dd></dl><h2>Letter B:</h2><dl><dt>BASE</dt><dd><a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>BAr</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>BOM</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>Balanced</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseEntity">xmlParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +</dd><dt>Base</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>BaseChar</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br /> +<a href="html/libxml-parserInternals.html#IS_LETTER">IS_LETTER</a><br /> +<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> +</dd><dt>Based</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>BasicLatin</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBasicLatin">xmlUCSIsBasicLatin</a><br /> +</dd><dt>Basically</dt><dd><a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>Before</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +</dd><dt>Behaves</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR_CH">IS_CHAR_CH</a><br /> +<a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br /> +<a href="html/libxml-parserInternals.html#IS_EXTENDER_CH">IS_EXTENDER_CH</a><br /> +</dd><dt>Behaviour</dt><dd><a href="html/libxml-parserInternals.html#IS_BLANK_CH">IS_BLANK_CH</a><br /> +</dd><dt>Bengali</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBengali">xmlUCSIsBengali</a><br /> +</dd><dt>Best</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>BinHex</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a><br /> +</dd><dt>Bit</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> +</dd><dt>BlockElements</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBlockElements">xmlUCSIsBlockElements</a><br /> +</dd><dt>Blocks</dt><dd><a href="html/libxml-parser.html#xmlStopParser">xmlStopParser</a><br /> +</dd><dt>Bopomofo</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBopomofo">xmlUCSIsBopomofo</a><br /> +</dd><dt>BopomofoExtended</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBopomofoExtended">xmlUCSIsBopomofoExtended</a><br /> +</dd><dt>Both</dt><dd><a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>BoxDrawing</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBoxDrawing">xmlUCSIsBoxDrawing</a><br /> +</dd><dt>BraillePatterns</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBraillePatterns">xmlUCSIsBraillePatterns</a><br /> +</dd><dt>Brzozowski</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +</dd><dt>Buffer</dt><dd><a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br /> +</dd><dt>Bugs:</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>Buhid</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBuhid">xmlUCSIsBuhid</a><br /> +</dd><dt>Build</dt><dd><a href="html/libxml-valid.html#xmlCopyAttributeTable">xmlCopyAttributeTable</a><br /> +<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br /> +<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br /> +<a href="html/libxml-valid.html#xmlCopyElementTable">xmlCopyElementTable</a><br /> +<a href="html/libxml-entities.html#xmlCopyEntitiesTable">xmlCopyEntitiesTable</a><br /> +<a href="html/libxml-valid.html#xmlCopyNotationTable">xmlCopyNotationTable</a><br /> +<a href="html/libxml-tree.html#xmlGetNodePath">xmlGetNodePath</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> +<a href="html/libxml-valid.html#xmlValidBuildContentModel">xmlValidBuildContentModel</a><br /> +<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br /> +</dd><dt>Builds</dt><dd><a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +</dd><dt>But</dt><dd><a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +</dd><dt>ByzantineMusicalSymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsByzantineMusicalSymbols">xmlUCSIsByzantineMusicalSymbols</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk1.html b/libxml2-2.7.7/doc/APIchunk1.html new file mode 100644 index 0000000..6a1af3e --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk1.html
@@ -0,0 +1,382 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index C-C for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index C-C for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter C:</h2><dl><dt>C14N</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br /> +</dd><dt>CATALOG</dt><dd><a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>CDATA</dt><dd><a href="html/libxml-HTMLtree.html#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br /> +<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndCDATA">xmlTextWriterEndCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterStartCDATA">xmlTextWriterStartCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteCDATA">xmlTextWriterWriteCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatCDATA">xmlTextWriterWriteFormatCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatCDATA">xmlTextWriterWriteVFormatCDATA</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +</dd><dt>CDEnd</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +</dd><dt>CDSect</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseContent">xmlParseContent</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>CDStart</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +</dd><dt>CData</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br /> +<a href="html/libxml-valid.html#xmlValidatePushCData">xmlValidatePushCData</a><br /> +</dd><dt>CJKCompatibility</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKCompatibility">xmlUCSIsCJKCompatibility</a><br /> +</dd><dt>CJKCompatibilityForms</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKCompatibilityForms">xmlUCSIsCJKCompatibilityForms</a><br /> +</dd><dt>CJKCompatibilityIdeographs</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKCompatibilityIdeographs">xmlUCSIsCJKCompatibilityIdeographs</a><br /> +</dd><dt>CJKCompatibilityIdeographsSupplement</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKCompatibilityIdeographsSupplement">xmlUCSIsCJKCompatibilityIdeographsSupplement</a><br /> +</dd><dt>CJKRadicalsSupplement</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKRadicalsSupplement">xmlUCSIsCJKRadicalsSupplement</a><br /> +</dd><dt>CJKSymbolsandPunctuation</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKSymbolsandPunctuation">xmlUCSIsCJKSymbolsandPunctuation</a><br /> +</dd><dt>CJKUnifiedIdeographs</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKUnifiedIdeographs">xmlUCSIsCJKUnifiedIdeographs</a><br /> +</dd><dt>CJKUnifiedIdeographsExtensionA</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKUnifiedIdeographsExtensionA">xmlUCSIsCJKUnifiedIdeographsExtensionA</a><br /> +</dd><dt>CJKUnifiedIdeographsExtensionB</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCJKUnifiedIdeographsExtensionB">xmlUCSIsCJKUnifiedIdeographsExtensionB</a><br /> +</dd><dt>CVS</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a><br /> +</dd><dt>CWD</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br /> +</dd><dt>Cache</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>Call</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>Callback</dt><dd><a href="html/libxml-SAX.html#externalSubset">externalSubset</a><br /> +<a href="html/libxml-parser.html#externalSubsetSAXFunc">externalSubsetSAXFunc</a><br /> +<a href="html/libxml-SAX.html#internalSubset">internalSubset</a><br /> +<a href="html/libxml-parser.html#internalSubsetSAXFunc">internalSubsetSAXFunc</a><br /> +<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-hash.html#xmlHashCopier">xmlHashCopier</a><br /> +<a href="html/libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a><br /> +<a href="html/libxml-hash.html#xmlHashScanner">xmlHashScanner</a><br /> +<a href="html/libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputOpenCallback">xmlInputOpenCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a><br /> +<a href="html/libxml-list.html#xmlListDataCompare">xmlListDataCompare</a><br /> +<a href="html/libxml-list.html#xmlListDeallocator">xmlListDeallocator</a><br /> +<a href="html/libxml-list.html#xmlListWalker">xmlListWalker</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a><br /> +<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ExternalSubset">xmlSAX2ExternalSubset</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2InternalSubset">xmlSAX2InternalSubset</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>Callback:</dt><dd><a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +</dd><dt>Called</dt><dd><a href="html/libxml-parser.html#cdataBlockSAXFunc">cdataBlockSAXFunc</a><br /> +<a href="html/libxml-parser.html#endDocumentSAXFunc">endDocumentSAXFunc</a><br /> +<a href="html/libxml-parser.html#endElementSAXFunc">endElementSAXFunc</a><br /> +<a href="html/libxml-parser.html#referenceSAXFunc">referenceSAXFunc</a><br /> +<a href="html/libxml-parser.html#startDocumentSAXFunc">startDocumentSAXFunc</a><br /> +<a href="html/libxml-parser.html#startElementSAXFunc">startElementSAXFunc</a><br /> +</dd><dt>Calling</dt><dd><a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br /> +</dd><dt>Canonical</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>Canonicalization</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>Carl</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>Catalog</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a><br /> +<a href="html/libxml-catalog.html#XML_CATALOG_PI">XML_CATALOG_PI</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogDump">xmlACatalogDump</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolve">xmlACatalogResolve</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolvePublic">xmlACatalogResolvePublic</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolveSystem">xmlACatalogResolveSystem</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolveURI">xmlACatalogResolveURI</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +<a href="html/libxml-catalog.html#xmlFreeCatalog">xmlFreeCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-catalog.html#xmlNewCatalog">xmlNewCatalog</a><br /> +</dd><dt>Catalogs</dt><dd><a href="html/libxml-catalog.html#XML_CATALOGS_NAMESPACE">XML_CATALOGS_NAMESPACE</a><br /> +<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>Change</dt><dd><a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +</dd><dt>Changes</dt><dd><a href="html/libxml-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a><br /> +</dd><dt>Char</dt><dd><a href="html/libxml-parserInternals.html#IS_BYTE_CHAR">IS_BYTE_CHAR</a><br /> +<a href="html/libxml-parserInternals.html#IS_CHAR">IS_CHAR</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePI">xmlParsePI</a><br /> +</dd><dt>CharData</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseContent">xmlParseContent</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>CharRef</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseCharRef">htmlParseCharRef</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +</dd><dt>Character</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br /> +</dd><dt>Characters</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br /> +</dd><dt>Checka</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +</dd><dt>Checks</dt><dd><a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataIsDeterminist">xmlAutomataIsDeterminist</a><br /> +<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetIsEmpty">xmlXPathNodeSetIsEmpty</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStackIsExternal">xmlXPathStackIsExternal</a><br /> +</dd><dt>Cherokee</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCherokee">xmlUCSIsCherokee</a><br /> +</dd><dt>Children</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +</dd><dt>Chunk</dt><dd><a href="html/libxml-DOCBparser.html#docbParseChunk">docbParseChunk</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseChunk">htmlParseChunk</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseChunk">xmlParseChunk</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>Cleanup</dt><dd><a href="html/libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a><br /> +<a href="html/libxml-entities.html#xmlCleanupPredefinedEntities">xmlCleanupPredefinedEntities</a><br /> +<a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPCleanup">xmlNanoHTTPCleanup</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGCleanupTypes">xmlRelaxNGCleanupTypes</a><br /> +<a href="html/libxml-xmlerror.html#xmlResetError">xmlResetError</a><br /> +<a href="html/libxml-xmlerror.html#xmlResetLastError">xmlResetLastError</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCleanupTypes">xmlSchemaCleanupTypes</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeValue">xmlSchemaFreeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredFuncsCleanup">xmlXPathRegisteredFuncsCleanup</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredNsCleanup">xmlXPathRegisteredNsCleanup</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredVariablesCleanup">xmlXPathRegisteredVariablesCleanup</a><br /> +</dd><dt>Clear</dt><dd><a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br /> +<a href="html/libxml-parser.html#xmlClearParserCtxt">xmlClearParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlPopInputCallbacks">xmlPopInputCallbacks</a><br /> +</dd><dt>Clears</dt><dd><a href="html/libxml-parser.html#xmlSetupParserForBuffer">xmlSetupParserForBuffer</a><br /> +</dd><dt>Close</dt><dd><a href="html/libxml-xmlIO.html#xmlFileClose">xmlFileClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPClose">xmlIOFTPClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPClose">xmlIOHTTPClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCloseConnection">xmlNanoFTPCloseConnection</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveClose">xmlSaveClose</a><br /> +</dd><dt>Closed</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> +</dd><dt>CombiningChar</dt><dd><a href="html/libxml-parserInternals.html#IS_COMBINING">IS_COMBINING</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseName">xmlParseName</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseNCName">xmlXPathParseNCName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseName">xmlXPathParseName</a><br /> +</dd><dt>CombiningDiacriticalMarks</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCombiningDiacriticalMarks">xmlUCSIsCombiningDiacriticalMarks</a><br /> +</dd><dt>CombiningDiacriticalMarksforSymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCombiningDiacriticalMarksforSymbols">xmlUCSIsCombiningDiacriticalMarksforSymbols</a><br /> +</dd><dt>CombiningHalfMarks</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCombiningHalfMarks">xmlUCSIsCombiningHalfMarks</a><br /> +</dd><dt>CombiningMarksforSymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCombiningMarksforSymbols">xmlUCSIsCombiningMarksforSymbols</a><br /> +</dd><dt>Comment</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseContent">xmlParseContent</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMisc">xmlParseMisc</a><br /> +</dd><dt>Compare</dt><dd><a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCompareValues">xmlSchemaCompareValues</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCompareValuesWhtsp">xmlSchemaCompareValuesWhtsp</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCmpNodes">xmlXPathCmpNodes</a><br /> +</dd><dt>Compile</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataCompile">xmlAutomataCompile</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCompile">xmlXPathCompile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>Compress</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlParseFile">xmlParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseFile">xmlSAXUserParseFile</a><br /> +</dd><dt>Computes</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +</dd><dt>Concat</dt><dd><a href="html/libxml-tree.html#xmlTextConcat">xmlTextConcat</a><br /> +</dd><dt>Constructs</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>Content</dt><dd><a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +</dd><dt>Content-Type</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +</dd><dt>Contrary</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +</dd><dt>ControlPictures</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsControlPictures">xmlUCSIsControlPictures</a><br /> +</dd><dt>Convenient</dt><dd><a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br /> +</dd><dt>Convert</dt><dd><a href="html/libxml-catalog.html#xmlCatalogConvert">xmlCatalogConvert</a><br /> +<a href="html/libxml-catalog.html#xmlConvertSGMLCatalog">xmlConvertSGMLCatalog</a><br /> +</dd><dt>Converts</dt><dd><a href="html/libxml-xpath.html#xmlXPathCastBooleanToNumber">xmlXPathCastBooleanToNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastBooleanToString">xmlXPathCastBooleanToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNodeSetToBoolean">xmlXPathCastNodeSetToBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNodeSetToNumber">xmlXPathCastNodeSetToNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNodeSetToString">xmlXPathCastNodeSetToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNodeToNumber">xmlXPathCastNodeToNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNodeToString">xmlXPathCastNodeToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNumberToBoolean">xmlXPathCastNumberToBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastNumberToString">xmlXPathCastNumberToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastStringToBoolean">xmlXPathCastStringToBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastStringToNumber">xmlXPathCastStringToNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastToBoolean">xmlXPathCastToBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastToNumber">xmlXPathCastToNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastToString">xmlXPathCastToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a><br /> +</dd><dt>Copies</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br /> +</dd><dt>Copy</dt><dd><a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>Correct</dt><dd><a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> +</dd><dt>Could</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>Count</dt><dd><a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br /> +</dd><dt>Creates</dt><dd><a href="html/libxml-HTMLtree.html#htmlNewDoc">htmlNewDoc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNewDocNoDtD">htmlNewDocNoDtD</a><br /> +<a href="html/libxml-parser.html#xmlCreateDocParserCtxt">xmlCreateDocParserCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeNewContext">xmlXIncludeNewContext</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>Creation</dt><dd><a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br /> +<a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br /> +<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewComment">xmlNewComment</a><br /> +<a href="html/libxml-tree.html#xmlNewDocComment">xmlNewDocComment</a><br /> +<a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +<a href="html/libxml-tree.html#xmlNewDocPI">xmlNewDocPI</a><br /> +<a href="html/libxml-tree.html#xmlNewDocRawNode">xmlNewDocRawNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocText">xmlNewDocText</a><br /> +<a href="html/libxml-tree.html#xmlNewDocTextLen">xmlNewDocTextLen</a><br /> +<a href="html/libxml-tree.html#xmlNewDtd">xmlNewDtd</a><br /> +<a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br /> +<a href="html/libxml-tree.html#xmlNewNode">xmlNewNode</a><br /> +<a href="html/libxml-tree.html#xmlNewNodeEatName">xmlNewNodeEatName</a><br /> +<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +<a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br /> +<a href="html/libxml-tree.html#xmlNewReference">xmlNewReference</a><br /> +<a href="html/libxml-tree.html#xmlNewText">xmlNewText</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br /> +</dd><dt>CurrencySymbols</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCurrencySymbols">xmlUCSIsCurrencySymbols</a><br /> +</dd><dt>Current</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +</dd><dt>Currently</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPInit">xmlNanoHTTPInit</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> +</dd><dt>Cut</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>CypriotSyllabary</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCypriotSyllabary">xmlUCSIsCypriotSyllabary</a><br /> +</dd><dt>Cyrillic</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCyrillic">xmlUCSIsCyrillic</a><br /> +</dd><dt>CyrillicSupplement</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCyrillicSupplement">xmlUCSIsCyrillicSupplement</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk10.html b/libxml2-2.7.7/doc/APIchunk10.html new file mode 100644 index 0000000..43c11a3 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk10.html
@@ -0,0 +1,653 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index Z-a for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index Z-a for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter Z:</h2><dl><dt>ZLIB</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlParseFile">xmlParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseFile">xmlSAXUserParseFile</a><br /> +<a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> +</dd><dt>Zlib</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ZLIB_ENABLED">LIBXML_ZLIB_ENABLED</a><br /> +</dd></dl><h2>Letter a:</h2><dl><dt>a-z</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +<a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>a-zA-Z</dt><dd><a href="html/libxml-parserInternals.html#IS_ASCII_LETTER">IS_ASCII_LETTER</a><br /> +</dd><dt>a-zA-Z0-9</dt><dd><a href="html/libxml-parserInternals.html#IS_PUBIDCHAR">IS_PUBIDCHAR</a><br /> +</dd><dt>a@b</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +</dd><dt>abc</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>abc-</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>able</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a><br /> +<a href="html/libxml-encoding.html#xmlGetCharEncodingHandler">xmlGetCharEncodingHandler</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>about</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpString">xmlDebugDumpString</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteRawLen">xmlTextWriterWriteRawLen</a><br /> +</dd><dt>above</dt><dd><a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>absent</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +</dd><dt>absoluteURI</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +</dd><dt>abstain</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>abstract</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a><br /> +</dd><dt>accept</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +<a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +</dd><dt>acceptable</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +</dd><dt>accepted</dt><dd><a href="html/libxml-parserInternals.html#IS_BYTE_CHAR">IS_BYTE_CHAR</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDefaults">xmlCatalogSetDefaults</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>accepting</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>accepts</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</dd><dt>access</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-threads.html#xmlNewMutex">xmlNewMutex</a><br /> +<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxtGetParserCtxt">xmlSchemaValidCtxtGetParserCtxt</a><br /> +</dd><dt>accessed</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>accesses</dt><dd><a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +</dd><dt>accexpted</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</dd><dt>accommodate</dt><dd><a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> +</dd><dt>according</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +<a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> +<a href="html/libxml-SAX2.html#xmlSAXVersion">xmlSAXVersion</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>accordingly</dt><dd><a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +</dd><dt>account</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +</dd><dt>acquire</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br /> +</dd><dt>act</dt><dd><a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>action</dt><dd><a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> +</dd><dt>activate</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +</dd><dt>activated</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +</dd><dt>activates</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>activation</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br /> +</dd><dt>acts</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +</dd><dt>actual</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrFreeLocationSet">xmlXPtrFreeLocationSet</a><br /> +</dd><dt>actually</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br /> +<a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br /> +<a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlNewCharEncodingHandler">xmlNewCharEncodingHandler</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>actuate</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +</dd><dt>add</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> +<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> +<a href="html/libxml-tree.html#xmlBufferCat">xmlBufferCat</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-list.html#xmlListPushBack">xmlListPushBack</a><br /> +<a href="html/libxml-list.html#xmlListPushFront">xmlListPushFront</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +</dd><dt>added</dt><dd><a href="html/libxml-SAX.html#attribute">attribute</a><br /> +<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlDocContentDumpFormatOutput">htmlDocContentDumpFormatOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlDocContentDumpOutput">htmlDocContentDumpOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlDocDumpMemoryFormat">htmlDocDumpMemoryFormat</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFile">htmlNodeDumpFile</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSaveFileEnc">htmlSaveFileEnc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSaveFileFormat">htmlSaveFileFormat</a><br /> +<a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br /> +<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncat">xmlStrncat</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetMerge">xmlXPathNodeSetMerge</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetMerge">xmlXPtrLocationSetMerge</a><br /> +</dd><dt>adding</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +</dd><dt>addition</dt><dd><a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>additional</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +</dd><dt>additionally</dt><dd><a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>address</dt><dd><a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a><br /> +</dd><dt>adds</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br /> +</dd><dt>adequate</dt><dd><a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +</dd><dt>adjacent</dt><dd><a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddChildList">xmlAddChildList</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br /> +</dd><dt>affect</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>affiliation</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +</dd><dt>afraid</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>after</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataCompile">xmlAutomataCompile</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCheckResponse">xmlNanoFTPCheckResponse</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetResponse">xmlNanoFTPGetResponse</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>again</dt><dd><a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +</dd><dt>against</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a><br /> +<a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br /> +<a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> +<a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>aggregate</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +</dd><dt>algebraic</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +</dd><dt>alias</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlDelEncodingAlias">xmlDelEncodingAlias</a><br /> +<a href="html/libxml-encoding.html#xmlGetEncodingAlias">xmlGetEncodingAlias</a><br /> +</dd><dt>aliases</dt><dd><a href="html/libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a><br /> +<a href="html/libxml-encoding.html#xmlCleanupEncodingAliases">xmlCleanupEncodingAliases</a><br /> +</dd><dt>aliasing</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +<a href="html/libxml-tree.html#xmlSearchNsByHref">xmlSearchNsByHref</a><br /> +</dd><dt>allocate</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#xmlBufferGrow">xmlBufferGrow</a><br /> +<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-threads.html#xmlNewMutex">xmlNewMutex</a><br /> +<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +<a href="html/libxml-xpath.html#xmlXPathObjectCopy">xmlXPathObjectCopy</a><br /> +</dd><dt>allocation</dt><dd><a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemStrdupLoc">xmlMemStrdupLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryStrdup">xmlMemoryStrdup</a><br /> +<a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>allocations</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br /> +</dd><dt>allocator</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a><br /> +</dd><dt>allocators</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +</dd><dt>allow</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a><br /> +<a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidCtxtGetParserCtxt">xmlSchemaValidCtxtGetParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +<a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +<a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br /> +<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br /> +<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br /> +<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br /> +</dd><dt>allowable</dt><dd><a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br /> +</dd><dt>allowed</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> +<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br /> +<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +</dd><dt>allowing</dt><dd><a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>allows</dt><dd><a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +</dd><dt>already</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a><br /> +<a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +</dd><dt>also</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckHTTPInput">xmlCheckHTTPInput</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>alternative</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterStartDTD">xmlTextWriterStartDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTD">xmlTextWriterWriteDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDEntity">xmlTextWriterWriteDTDEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDExternalEntity">xmlTextWriterWriteDTDExternalEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDExternalEntityContents">xmlTextWriterWriteDTDExternalEntityContents</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDNotation">xmlTextWriterWriteDTDNotation</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTD">xmlTextWriterWriteFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a><br /> +</dd><dt>always</dt><dd><a href="html/libxml-parserInternals.html#INPUT_CHUNK">INPUT_CHUNK</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +</dd><dt>amd</dt><dd><a href="html/libxml-catalog.html#xmlCatalogIsEmpty">xmlCatalogIsEmpty</a><br /> +</dd><dt>amount</dt><dd><a href="html/libxml-parserInternals.html#INPUT_CHUNK">INPUT_CHUNK</a><br /> +<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemUsed">xmlMemUsed</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> +</dd><dt>amp</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +</dd><dt>ampersand</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>analysis</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +</dd><dt>analyze</dt><dd><a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +<a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> +</dd><dt>analyzed</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +</dd><dt>ancestor</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> +</dd><dt>ancestor-or-self</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +</dd><dt>ancestors</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br /> +</dd><dt>anchored</dt><dd><a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br /> +<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> +</dd><dt>angle</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +</dd><dt>annotation</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAnnot">_xmlSchemaAnnot</a><br /> +</dd><dt>another</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +</dd><dt>anySimpleType</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +</dd><dt>anyURI</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>anymore</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br /> +<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br /> +</dd><dt>anyway</dt><dd><a href="html/libxml-parser.html#xmlRecoverDoc">xmlRecoverDoc</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlRecoverMemory">xmlRecoverMemory</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +</dd><dt>apart</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>apos</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +</dd><dt>appear</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>appearing</dt><dd><a href="html/libxml-valid.html#xmlValidatePopElement">xmlValidatePopElement</a><br /> +<a href="html/libxml-valid.html#xmlValidatePushElement">xmlValidatePushElement</a><br /> +</dd><dt>appears</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +</dd><dt>append</dt><dd><a href="html/libxml-parserInternals.html#xmlCopyChar">xmlCopyChar</a><br /> +<a href="html/libxml-parserInternals.html#xmlCopyCharMultiByte">xmlCopyCharMultiByte</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>appended</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br /> +</dd><dt>appending</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +</dd><dt>appendix</dt><dd><a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> +</dd><dt>applicable</dt><dd><a href="html/libxml-tree.html#xmlCopyNode">xmlCopyNode</a><br /> +<a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br /> +</dd><dt>application</dt><dd><a href="html/libxml-tree.html#_xmlAttr">_xmlAttr</a><br /> +<a href="html/libxml-tree.html#_xmlAttribute">_xmlAttribute</a><br /> +<a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br /> +<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +<a href="html/libxml-tree.html#_xmlNs">_xmlNs</a><br /> +<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-parser.html#xmlGetExternalEntityLoader">xmlGetExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +<a href="html/libxml-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlagsData">xmlXIncludeProcessFlagsData</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a><br /> +</dd><dt>applications</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +</dd><dt>applied</dt><dd><a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br /> +<a href="html/libxml-hash.html#xmlHashScan">xmlHashScan</a><br /> +<a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull">xmlHashScanFull</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +</dd><dt>applies</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +</dd><dt>apply</dt><dd><a href="html/libxml-list.html#xmlListReverseWalk">xmlListReverseWalk</a><br /> +<a href="html/libxml-list.html#xmlListWalk">xmlListWalk</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> +<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> +</dd><dt>applying</dt><dd><a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +</dd><dt>appropriate</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckHTTPInput">xmlCheckHTTPInput</a><br /> +<a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> +</dd><dt>arcs</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +</dd><dt>area</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +</dd><dt>areas</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemBlocks">xmlMemBlocks</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemShow">xmlMemShow</a><br /> +</dd><dt>args</dt><dd><a href="html/libxml-xpathInternals.html#CHECK_ARITY">CHECK_ARITY</a><br /> +<a href="">x</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrRangeToFunction">xmlXPtrRangeToFunction</a><br /> +</dd><dt>around</dt><dd><a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> +</dd><dt>arrays</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>arry</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br /> +</dd><dt>asked</dt><dd><a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +</dd><dt>assume</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br /> +</dd><dt>assumed</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +</dd><dt>assumes</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>assuming</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +</dd><dt>assure</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +</dd><dt>atom</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +</dd><dt>atomic</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +</dd><dt>attached</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>attempt</dt><dd><a href="html/libxml-parser.html#xmlRecoverDoc">xmlRecoverDoc</a><br /> +<a href="html/libxml-parser.html#xmlRecoverMemory">xmlRecoverMemory</a><br /> +</dd><dt>attempts</dt><dd><a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +</dd><dt>attr</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_REDEFINED">XML_SCHEMAS_ATTRGROUP_REDEFINED</a><br /> +<a href="html/libxml-tree.html#_xmlID">_xmlID</a><br /> +<a href="html/libxml-tree.html#_xmlRef">_xmlRef</a><br /> +</dd><dt>attribute-</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>attribute-list</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +</dd><dt>attribute-node</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +</dd><dt>attribute-nodes</dt><dd><a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>attributeFormDefault</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a><br /> +</dd><dt>augmented</dt><dd><a href="html/libxml-DOCBparser.html#docbParseDocument">docbParseDocument</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseDocument">htmlParseDocument</a><br /> +<a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br /> +<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br /> +<a href="html/libxml-tree.html#xmlTextMerge">xmlTextMerge</a><br /> +</dd><dt>autark</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>authentication</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPAuthHeader">xmlNanoHTTPAuthHeader</a><br /> +</dd><dt>author</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>authority</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> +</dd><dt>authorized</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>auto</dt><dd><a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br /> +</dd><dt>auto-repair</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>autoclose</dt><dd><a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +</dd><dt>autoclosed</dt><dd><a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +</dd><dt>autogeneration</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>automatically</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br /> +</dd><dt>automaton</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>autoreference</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +</dd><dt>avoid</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>avoiding</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNext">xmlTextReaderNext</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> +</dd><dt>aware</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk11.html b/libxml2-2.7.7/doc/APIchunk11.html new file mode 100644 index 0000000..b77863c --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk11.html
@@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index b-b for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index b-b for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br /> +<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br /> +<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGDump">xmlRelaxNGDump</a><br /> +<a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br /> +</dd><dt>badly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +</dd><dt>bahaviour</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>balanced</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>bar</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>base64</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a><br /> +</dd><dt>based</dt><dd><a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetNodePath">xmlGetNodePath</a><br /> +<a href="html/libxml-parserInternals.html#xmlNewEntityInputStream">xmlNewEntityInputStream</a><br /> +<a href="html/libxml-parserInternals.html#xmlNewInputFromFile">xmlNewInputFromFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlNewStringInputStream">xmlNewStringInputStream</a><br /> +<a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewValidCtxt">xmlRelaxNGNewValidCtxt</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewValidCtxt">xmlSchematronNewValidCtxt</a><br /> +<a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrsub">xmlStrsub</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>basically</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocument">xmlValidateDocument</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> +</dd><dt>basis</dt><dd><a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +</dd><dt>bear</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +</dd><dt>becomes</dt><dd><a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br /> +</dd><dt>before</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br /> +<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>beginning</dt><dd><a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> +<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br /> +<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +<a href="html/libxml-list.html#xmlListInsert">xmlListInsert</a><br /> +<a href="html/libxml-list.html#xmlListPushFront">xmlListPushFront</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>begins</dt><dd><a href="html/libxml-parser.html#_xmlParserNodeInfo">_xmlParserNodeInfo</a><br /> +</dd><dt>behaves</dt><dd><a href="html/libxml-parserInternals.html#IS_LETTER_CH">IS_LETTER_CH</a><br /> +</dd><dt>behavior</dt><dd><a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +</dd><dt>behaviour</dt><dd><a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFile">htmlNodeDumpFile</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br /> +<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br /> +<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br /> +<a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br /> +<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +</dd><dt>below</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +</dd><dt>better</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +<a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseMemory">xmlSAXUserParseMemory</a><br /> +</dd><dt>between</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +</dd><dt>beyond</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>binary</dt><dd><a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a><br /> +</dd><dt>bindings</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +</dd><dt>bit</dt><dd><a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +</dd><dt>blanks</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br /> +</dd><dt>bloc</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>blockDefault</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a><br /> +</dd><dt>blocked</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +</dd><dt>blocking</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br /> +</dd><dt>blocks</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR">IS_CHAR</a><br /> +<a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br /> +<a href="html/libxml-SAX.html#initdocbDefaultSAXHandler">initdocbDefaultSAXHandler</a><br /> +<a href="html/libxml-SAX.html#inithtmlDefaultSAXHandler">inithtmlDefaultSAXHandler</a><br /> +<a href="html/libxml-SAX.html#initxmlDefaultSAXHandler">initxmlDefaultSAXHandler</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemBlocks">xmlMemBlocks</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplay">xmlMemDisplay</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a><br /> +</dd><dt>body</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>book1</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>bool</dt><dd><a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br /> +</dd><dt>both</dt><dd><a href="html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +</dd><dt>bound</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +</dd><dt>boundaries</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +</dd><dt>boundary</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +</dd><dt>bracket</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +</dd><dt>branch</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br /> +</dd><dt>break</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +</dd><dt>breaking</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>breaks</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +</dd><dt>broke</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>broken</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>buf</dt><dd><a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +</dd><dt>buffered</dt><dd><a href="html/libxml-xmlIO.html#xmlAllocOutputBuffer">xmlAllocOutputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlAllocParserInputBuffer">xmlAllocParserInputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlFreeParserInputBuffer">xmlFreeParserInputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateBuffer">xmlOutputBufferCreateBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFd">xmlOutputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFile">xmlOutputBufferCreateFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFd">xmlParserInputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFile">xmlParserInputBufferCreateFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateIO">xmlParserInputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>builded</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a><br /> +</dd><dt>building</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br /> +<a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br /> +<a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +</dd><dt>builds</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> +</dd><dt>built</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> +</dd><dt>built-in</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +</dd><dt>builtin</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a><br /> +<a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br /> +</dd><dt>bunch</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +</dd><dt>bypass</dt><dd><a href="html/libxml-catalog.html#xmlParseCatalogFile">xmlParseCatalogFile</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk12.html b/libxml2-2.7.7/doc/APIchunk12.html new file mode 100644 index 0000000..13c1702 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk12.html
@@ -0,0 +1,912 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index c-c for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index c-c for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter c:</h2><dl><dt>c14n</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>cache</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>cached</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>caching:</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>calculated</dt><dd><a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br /> +</dd><dt>calculates</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Size">xmlUTF8Size</a><br /> +</dd><dt>calling</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br /> +</dd><dt>calls</dt><dd><a href="html/libxml-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>came</dt><dd><a href="html/libxml-parserInternals.html#xmlPopInput">xmlPopInput</a><br /> +</dd><dt>cannot</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterNs">xmlXPathRegisterNs</a><br /> +</dd><dt>canonic</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +</dd><dt>canonical</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>canonicalization</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>canonicalized</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br /> +</dd><dt>canonization</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>canonized</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>capable</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +</dd><dt>caracters</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +</dd><dt>cardinality</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>carried</dt><dd><a href="html/libxml-tree.html#xmlNewDocProp">xmlNewDocProp</a><br /> +<a href="html/libxml-tree.html#xmlNewNsProp">xmlNewNsProp</a><br /> +<a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br /> +<a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br /> +<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-tree.html#xmlSetNsProp">xmlSetNsProp</a><br /> +<a href="html/libxml-tree.html#xmlSetProp">xmlSetProp</a><br /> +<a href="html/libxml-tree.html#xmlUnsetNsProp">xmlUnsetNsProp</a><br /> +<a href="html/libxml-tree.html#xmlUnsetProp">xmlUnsetProp</a><br /> +</dd><dt>carries</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +</dd><dt>carrying</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a><br /> +<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +<a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br /> +<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +</dd><dt>case-ignoring</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br /> +</dd><dt>cases</dt><dd><a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +</dd><dt>cast</dt><dd><a href="html/libxml-xmlstring.html#BAD_CAST">BAD_CAST</a><br /> +<a href="html/libxml-xpathInternals.html#CAST_TO_BOOLEAN">CAST_TO_BOOLEAN</a><br /> +<a href="html/libxml-xpathInternals.html#CAST_TO_NUMBER">CAST_TO_NUMBER</a><br /> +<a href="html/libxml-xpathInternals.html#CAST_TO_STRING">CAST_TO_STRING</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertFunc">xmlXPathConvertFunc</a><br /> +</dd><dt>casting</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>cat</dt><dd><a href="html/libxml-debugXML.html#xmlShellCat">xmlShellCat</a><br /> +</dd><dt>catalogs</dt><dd><a href="html/libxml-catalog.html#xmlCatalogAddLocal">xmlCatalogAddLocal</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogCleanup">xmlCatalogCleanup</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogFreeLocal">xmlCatalogFreeLocal</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogLocalResolve">xmlCatalogLocalResolve</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogLocalResolveURI">xmlCatalogLocalResolveURI</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDefaults">xmlCatalogSetDefaults</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +</dd><dt>category</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCat">xmlUCSIsCat</a><br /> +</dd><dt>cause</dt><dd><a href="html/libxml-debugXML.html#xmlShellPrintXPathError">xmlShellPrintXPathError</a><br /> +</dd><dt>caution</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> +</dd><dt>cdata-section-</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>ceiling</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +</dd><dt>certainly</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>chained</dt><dd><a href="html/libxml-tree.html#xmlFreeNsList">xmlFreeNsList</a><br /> +</dd><dt>change</dt><dd><a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> +<a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-xmlerror.html#xmlResetLastError">xmlResetLastError</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCollapseString">xmlSchemaCollapseString</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaWhiteSpaceReplace">xmlSchemaWhiteSpaceReplace</a><br /> +<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchInputEncoding">xmlSwitchInputEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchToEncoding">xmlSwitchToEncoding</a><br /> +</dd><dt>changed</dt><dd><a href="html/libxml-tree.html#xmlNodeSetBase">xmlNodeSetBase</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetLang">xmlNodeSetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetName">xmlNodeSetName</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetSpacePreserve">xmlNodeSetSpacePreserve</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>changes</dt><dd><a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> +</dd><dt>changing</dt><dd><a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br /> +</dd><dt>channel</dt><dd><a href="html/libxml-xmlIO.html#xmlFileClose">xmlFileClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPClose">xmlIOFTPClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPOpen">xmlIOFTPOpen</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPRead">xmlIOFTPRead</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPClose">xmlIOHTTPClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpen">xmlIOHTTPOpen</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPRead">xmlIOHTTPRead</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPrintXPathError">xmlShellPrintXPathError</a><br /> +</dd><dt>characters</dt><dd><a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br /> +<a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br /> +<a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringLengthFunction">xmlXPathStringLengthFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>charencoding</dt><dd><a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +</dd><dt>chars??</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteRawLen">xmlTextWriterWriteRawLen</a><br /> +</dd><dt>charset</dt><dd><a href="html/libxml-xmlIO.html#xmlAllocParserInputBuffer">xmlAllocParserInputBuffer</a><br /> +<a href="html/libxml-parser.html#xmlCreateIOParserCtxt">xmlCreateIOParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br /> +<a href="html/libxml-parser.html#xmlNewIOInputStream">xmlNewIOInputStream</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFd">xmlParserInputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFile">xmlParserInputBufferCreateFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateIO">xmlParserInputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +</dd><dt>checked</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a><br /> +<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-tree.html#xmlSetNsProp">xmlSetNsProp</a><br /> +</dd><dt>checking</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +<a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemFree">xmlMemFree</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +</dd><dt>checkings</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +</dd><dt>checks</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br /> +<a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckHTTPInput">xmlCheckHTTPInput</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPInit">xmlNanoHTTPInit</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocument">xmlValidateDocument</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetContains">xmlXPathNodeSetContains</a><br /> +</dd><dt>child-</dt><dd><a href="html/libxml-tree.html#_xmlAttr">_xmlAttr</a><br /> +<a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +</dd><dt>childrens</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +</dd><dt>childs</dt><dd><a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +<a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>choice</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>choices</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +</dd><dt>choices:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br /> +</dd><dt>chunk</dt><dd><a href="html/libxml-DOCBparser.html#docbParseChunk">docbParseChunk</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseChunk">htmlParseChunk</a><br /> +<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseChunk">xmlParseChunk</a><br /> +<a href="html/libxml-parser.html#xmlParseEntity">xmlParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +</dd><dt>circular</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br /> +</dd><dt>clean</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +</dd><dt>cleanly</dt><dd><a href="html/libxml-xmlIO.html#xmlCheckHTTPInput">xmlCheckHTTPInput</a><br /> +</dd><dt>cleans</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd><dt>cleanup</dt><dd><a href="html/libxml-globals.html#xmlCleanupGlobals">xmlCleanupGlobals</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a><br /> +</dd><dt>clear</dt><dd><a href="html/libxml-list.html#xmlListMerge">xmlListMerge</a><br /> +</dd><dt>clears</dt><dd><a href="html/libxml-xmlIO.html#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a><br /> +</dd><dt>client</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>clone</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +</dd><dt>cloned</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +</dd><dt>close</dt><dd><a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadIO">htmlCtxtReadIO</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadIO">htmlReadIO</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a><br /> +<a href="html/libxml-parser.html#xmlCreateIOParserCtxt">xmlCreateIOParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadIO">xmlCtxtReadIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateIO">xmlParserInputBufferCreateIO</a><br /> +<a href="html/libxml-parser.html#xmlReadIO">xmlReadIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForIO">xmlReaderForIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewIO">xmlReaderNewIO</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> +</dd><dt>closed</dt><dd><a href="html/libxml-parser.html#xmlCtxtReadFd">xmlCtxtReadFd</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a><br /> +<a href="html/libxml-parser.html#xmlReadFd">xmlReadFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFd">xmlReaderForFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFd">xmlReaderNewFd</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br /> +</dd><dt>closes</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPSave">xmlNanoHTTPSave</a><br /> +</dd><dt>closest</dt><dd><a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br /> +<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br /> +</dd><dt>closing</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>cncerning</dt><dd><a href="html/libxml-debugXML.html#xmlDebugDumpDocumentHead">xmlDebugDumpDocumentHead</a><br /> +</dd><dt>coding</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>collapse</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE">XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE</a><br /> +</dd><dt>collect</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> +</dd><dt>collected</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +</dd><dt>colon</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +</dd><dt>column</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +<a href="html/libxml-SAX.html#getColumnNumber">getColumnNumber</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetColumnNumber">xmlSAX2GetColumnNumber</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetParserColumnNumber">xmlTextReaderGetParserColumnNumber</a><br /> +</dd><dt>com</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +</dd><dt>combining</dt><dd><a href="html/libxml-parserInternals.html#IS_COMBINING_CH">IS_COMBINING_CH</a><br /> +</dd><dt>come</dt><dd><a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>coment</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterEndComment">xmlTextWriterEndComment</a><br /> +</dd><dt>comes</dt><dd><a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>coming</dt><dd><a href="html/libxml-xinclude.html#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a><br /> +</dd><dt>command</dt><dd><a href="html/libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a><br /> +<a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCheckResponse">xmlNanoFTPCheckResponse</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetResponse">xmlNanoFTPGetResponse</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPQuit">xmlNanoFTPQuit</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDu">xmlShellDu</a><br /> +</dd><dt>commandline</dt><dd><a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +</dd><dt>commands</dt><dd><a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +</dd><dt>comment</dt><dd><a href="html/libxml-HTMLtree.html#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a><br /> +<a href="html/libxml-SAX.html#comment">comment</a><br /> +<a href="html/libxml-parser.html#commentSAXFunc">commentSAXFunc</a><br /> +<a href="html/libxml-tree.html#xmlNewComment">xmlNewComment</a><br /> +<a href="html/libxml-tree.html#xmlNewDocComment">xmlNewDocComment</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterStartComment">xmlTextWriterStartComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteComment">xmlTextWriterWriteComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatComment">xmlTextWriterWriteFormatComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatComment">xmlTextWriterWriteVFormatComment</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIsNodeType">xmlXPathIsNodeType</a><br /> +</dd><dt>comment-</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>comments</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br /> +<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +</dd><dt>commodity</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>common</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +</dd><dt>comp</dt><dd><a href="html/libxml-pattern.html#xmlFreePattern">xmlFreePattern</a><br /> +<a href="html/libxml-pattern.html#xmlFreePatternList">xmlFreePatternList</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeCompExpr">xmlXPathFreeCompExpr</a><br /> +</dd><dt>compare</dt><dd><a href="html/libxml-list.html#xmlListDataCompare">xmlListDataCompare</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Charcmp">xmlUTF8Charcmp</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>compared</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>compares</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Charcmp">xmlUTF8Charcmp</a><br /> +</dd><dt>comparing</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>comparison</dt><dd><a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-list.html#xmlListCreate">xmlListCreate</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcasecmp">xmlStrcasecmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcmp">xmlStrcmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncasecmp">xmlStrncasecmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncmp">xmlStrncmp</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>comparisons</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>compatibility</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br /> +<a href="html/libxml-parserInternals.html#xmlCopyChar">xmlCopyChar</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> +<a href="html/libxml-tree.html#xmlRootNode">xmlRootNode</a><br /> +</dd><dt>compatible</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +</dd><dt>compilation</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a><br /> +<a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCompile">xmlXPathCompile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCtxtCompile">xmlXPathCtxtCompile</a><br /> +</dd><dt>compile</dt><dd><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +</dd><dt>compile-time</dt><dd><a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlParseFile">xmlParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +</dd><dt>compiled-in</dt><dd><a href="html/libxml-xmlIO.html#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlPopInputCallbacks">xmlPopInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterDefaultInputCallbacks">xmlRegisterDefaultInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterDefaultOutputCallbacks">xmlRegisterDefaultOutputCallbacks</a><br /> +</dd><dt>compiling</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> +</dd><dt>complement</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>complete</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolve">xmlACatalogResolve</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolveURI">xmlACatalogResolveURI</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogLocalResolve">xmlCatalogLocalResolve</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogLocalResolveURI">xmlCatalogLocalResolveURI</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogResolve">xmlCatalogResolve</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogResolveURI">xmlCatalogResolveURI</a><br /> +</dd><dt>completed</dt><dd><a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +</dd><dt>completely</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>complex</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>complexType</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a><br /> +</dd><dt>complicated</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>component</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>components</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +</dd><dt>compound</dt><dd><a href="html/libxml-xpath.html#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrFreeLocationSet">xmlXPtrFreeLocationSet</a><br /> +</dd><dt>compress</dt><dd><a href="html/libxml-xmlwriter.html#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterFilename">xmlNewTextWriterFilename</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br /> +</dd><dt>compressed</dt><dd><a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +<a href="html/libxml-DOCBparser.html#docbCreateFileParserCtxt">docbCreateFileParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateFileParserCtxt">xmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateURLParserCtxt">xmlCreateURLParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlParseFile">xmlParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-parser.html#xmlRecoverFile">xmlRecoverFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseFile">xmlSAXUserParseFile</a><br /> +</dd><dt>compression</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterMemory">xmlNewTextWriterMemory</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-tree.html#xmlSaveFile">xmlSaveFile</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +<a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> +</dd><dt>comprising</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +</dd><dt>computation</dt><dd><a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>compute</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +</dd><dt>computed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a><br /> +<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueAppend">xmlSchemaValueAppend</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsBoolean">xmlSchemaValueGetAsBoolean</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsString">xmlSchemaValueGetAsString</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +</dd><dt>computes</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br /> +</dd><dt>concat</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathConcatFunction">xmlXPathConcatFunction</a><br /> +</dd><dt>concatenated</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +</dd><dt>concatenation</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathConcatFunction">xmlXPathConcatFunction</a><br /> +</dd><dt>condition</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +</dd><dt>conditionalSect</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> +</dd><dt>configured</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlversion.html#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_C14N_ENABLED">LIBXML_C14N_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_CATALOG_ENABLED">LIBXML_CATALOG_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_FTP_ENABLED">LIBXML_FTP_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_HTML_ENABLED">LIBXML_HTML_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_HTTP_ENABLED">LIBXML_HTTP_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_OUTPUT_ENABLED">LIBXML_OUTPUT_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_THREAD_ENABLED">LIBXML_THREAD_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_VALID_ENABLED">LIBXML_VALID_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_XINCLUDE_ENABLED">LIBXML_XINCLUDE_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_XPATH_ENABLED">LIBXML_XPATH_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_XPTR_ENABLED">LIBXML_XPTR_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#WITHOUT_TRIO">WITHOUT_TRIO</a><br /> +<a href="html/libxml-xmlversion.html#WITH_TRIO">WITH_TRIO</a><br /> +</dd><dt>conforming</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> +</dd><dt>conforms</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br /> +<a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br /> +<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br /> +<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br /> +<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br /> +</dd><dt>conjunction</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> +</dd><dt>connection</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCloseConnection">xmlNanoFTPCloseConnection</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPConnect">xmlNanoFTPConnect</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPFreeCtxt">xmlNanoFTPFreeCtxt</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br /> +</dd><dt>connector</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>cononical</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br /> +</dd><dt>consequent</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +</dd><dt>consideration</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>considered</dt><dd><a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>consist</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> +</dd><dt>constant</dt><dd><a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br /> +<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>constraint</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttribute">_xmlSchemaAttribute</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcardNs">_xmlSchemaWildcardNs</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +</dd><dt>constraints</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>construct</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>construction</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>constructs</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +</dd><dt>consumed</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewQNameValue">xmlSchemaNewQNameValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +</dd><dt>consuming</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +</dd><dt>contain</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewMemParserCtxt">xmlRelaxNGNewMemParserCtxt</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringBeforeFunction">xmlXPathSubstringBeforeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> +</dd><dt>contained</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a><br /> +</dd><dt>contains</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderMoveToElement">xmlTextReaderMoveToElement</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathContainsFunction">xmlXPathContainsFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextChild">xmlXPathNextChild</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextDescendant">xmlXPathNextDescendant</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowingSibling">xmlXPathNextFollowingSibling</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextNamespace">xmlXPathNextNamespace</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextParent">xmlXPathNextParent</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetContains">xmlXPathNodeSetContains</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> +</dd><dt>content:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseContent">xmlParseContent</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEqualValues">xmlXPathEqualValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a><br /> +</dd><dt>contentType</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +</dd><dt>contents</dt><dd><a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br /> +<a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br /> +<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-parser.html#xmlSetupParserForBuffer">xmlSetupParserForBuffer</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderExpand">xmlTextReaderExpand</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadString">xmlTextReaderReadString</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDTDExternalEntityContents">xmlTextWriterWriteDTDExternalEntityContents</a><br /> +</dd><dt>contentspec</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +</dd><dt>context?</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>contexts</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +</dd><dt>contextual</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> +</dd><dt>continuing</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>contraint</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +</dd><dt>contrary</dt><dd><a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br /> +</dd><dt>contrast</dt><dd><a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br /> +</dd><dt>control</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPConnect">xmlNanoFTPConnect</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +</dd><dt>conveniently</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +</dd><dt>conversion</dt><dd><a href="html/libxml-xpath.html#_xmlXPathType">_xmlXPathType</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertFunc">xmlXPathConvertFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopBoolean">xmlXPathPopBoolean</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopExternal">xmlXPathPopExternal</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNodeSet">xmlXPathPopNodeSet</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNumber">xmlXPathPopNumber</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopString">xmlXPathPopString</a><br /> +</dd><dt>conversions</dt><dd><a href="html/libxml-xmlIO.html#_xmlOutputBuffer">_xmlOutputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +</dd><dt>convert</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> +<a href="html/libxml-SAX.html#attribute">attribute</a><br /> +<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br /> +</dd><dt>converted</dt><dd><a href="html/libxml-catalog.html#xmlCatalogConvert">xmlCatalogConvert</a><br /> +<a href="html/libxml-catalog.html#xmlConvertSGMLCatalog">xmlConvertSGMLCatalog</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringLengthFunction">xmlXPathStringLengthFunction</a><br /> +</dd><dt>converter</dt><dd><a href="html/libxml-xmlIO.html#xmlAllocOutputBuffer">xmlAllocOutputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateBuffer">xmlOutputBufferCreateBuffer</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFd">xmlOutputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFile">xmlOutputBufferCreateFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +</dd><dt>converting</dt><dd><a href="html/libxml-tree.html#xmlSaveFileEnc">xmlSaveFileEnc</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +</dd><dt>converts</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>copied</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetMerge">xmlXPathNodeSetMerge</a><br /> +</dd><dt>copier</dt><dd><a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br /> +</dd><dt>copying</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +</dd><dt>correct</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +</dd><dt>correctly</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>correponding</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>correspond</dt><dd><a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br /> +<a href="html/libxml-parser.html#xmlParseEntity">xmlParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +</dd><dt>corresponding</dt><dd><a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br /> +<a href="html/libxml-entities.html#xmlGetDtdEntity">xmlGetDtdEntity</a><br /> +<a href="html/libxml-entities.html#xmlGetParameterEntity">xmlGetParameterEntity</a><br /> +<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-tree.html#xmlSetProp">xmlSetProp</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>cost</dt><dd><a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>costly</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br /> +<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>could</dt><dd><a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValueWhtsp">xmlSchemaGetCanonValueWhtsp</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>count</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpRef">xmlExpRef</a><br /> +<a href="html/libxml-debugXML.html#xmlLsCountNode">xmlLsCountNode</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderAttributeCount">xmlTextReaderAttributeCount</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCountFunction">xmlXPathCountFunction</a><br /> +</dd><dt>counter</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> +<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> +</dd><dt>counterparts</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +</dd><dt>course</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>cover</dt><dd><a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +</dd><dt>crash</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>create</dt><dd><a href="html/libxml-tree.html#xmlBufferCreate">xmlBufferCreate</a><br /> +<a href="html/libxml-tree.html#xmlBufferCreateSize">xmlBufferCreateSize</a><br /> +<a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogIsEmpty">xmlCatalogIsEmpty</a><br /> +<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-valid.html#xmlCreateEnumeration">xmlCreateEnumeration</a><br /> +<a href="html/libxml-catalog.html#xmlNewCatalog">xmlNewCatalog</a><br /> +<a href="html/libxml-tree.html#xmlNewDtd">xmlNewDtd</a><br /> +<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +</dd><dt>creates</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition">xmlAutomataNewTransition</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewTransition2">xmlAutomataNewTransition2</a><br /> +<a href="html/libxml-uri.html#xmlCreateURI">xmlCreateURI</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>creating</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +</dd><dt>creation</dt><dd><a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> +<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +<a href="html/libxml-globals.html#xmlRegisterNodeDefault">xmlRegisterNodeDefault</a><br /> +</dd><dt>cross</dt><dd><a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +</dd><dt>crossed</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +</dd><dt>cshema</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a><br /> +</dd><dt>ctrio</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>ctxt</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +</dd><dt>ctxt-</dt><dd><a href="html/libxml-DOCBparser.html#docbFreeParserCtxt">docbFreeParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlFreeParserCtxt">htmlFreeParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlPopInput">xmlPopInput</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>cur</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>curent</dt><dd><a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br /> +</dd><dt>currently</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemBlocks">xmlMemBlocks</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemUsed">xmlMemUsed</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>custom</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveSetEscape">xmlSaveSetEscape</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk13.html b/libxml2-2.7.7/doc/APIchunk13.html new file mode 100644 index 0000000..d693461 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk13.html
@@ -0,0 +1,661 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index d-d for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index d-d for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter d:</h2><dl><dt>dangerous</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>data-type</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br /> +</dd><dt>datatype</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +</dd><dt>day</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>day:minute</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>de-coupled</dt><dd><a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>deactivated</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidate">xmlTextReaderSchemaValidate</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSchemaValidateCtxt">xmlTextReaderSchemaValidateCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +</dd><dt>deallocate</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-list.html#xmlListDeallocator">xmlListDeallocator</a><br /> +<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br /> +</dd><dt>deallocated</dt><dd><a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriter">xmlNewTextWriter</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-uri.html#xmlSaveUri">xmlSaveUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstBaseUri">xmlTextReaderConstBaseUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstEncoding">xmlTextReaderConstEncoding</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstLocalName">xmlTextReaderConstLocalName</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstName">xmlTextReaderConstName</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstNamespaceUri">xmlTextReaderConstNamespaceUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstPrefix">xmlTextReaderConstPrefix</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstValue">xmlTextReaderConstValue</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstXmlVersion">xmlTextReaderConstXmlVersion</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetAttribute">xmlTextReaderGetAttribute</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetAttributeNo">xmlTextReaderGetAttributeNo</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetAttributeNs">xmlTextReaderGetAttributeNs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderLookupNamespace">xmlTextReaderLookupNamespace</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadString">xmlTextReaderReadString</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderValue">xmlTextReaderValue</a><br /> +</dd><dt>deallocation</dt><dd><a href="html/libxml-list.html#xmlListRemoveAll">xmlListRemoveAll</a><br /> +<a href="html/libxml-list.html#xmlListRemoveFirst">xmlListRemoveFirst</a><br /> +<a href="html/libxml-list.html#xmlListRemoveLast">xmlListRemoveLast</a><br /> +</dd><dt>deallocator</dt><dd><a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +<a href="html/libxml-list.html#xmlListCreate">xmlListCreate</a><br /> +</dd><dt>debug</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttr">xmlDebugDumpAttr</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDTD">xmlDebugDumpDTD</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocument">xmlDebugDumpDocument</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocumentHead">xmlDebugDumpDocumentHead</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpEntities">xmlDebugDumpEntities</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNode">xmlDebugDumpNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpPrint">xmlRegexpPrint</a><br /> +<a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> +</dd><dt>debugging</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlversion.html#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_DEBUG_RUNTIME">LIBXML_DEBUG_RUNTIME</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>decimal</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>decl</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a><br /> +<a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br /> +<a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br /> +</dd><dt>declarations</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseCharRef">htmlParseCharRef</a><br /> +<a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTD">xmlTextWriterWriteFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br /> +</dd><dt>declare</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +</dd><dt>declared</dt><dd><a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +</dd><dt>declaring</dt><dd><a href="html/libxml-valid.html#xmlGetID">xmlGetID</a><br /> +</dd><dt>decode</dt><dd><a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +</dd><dt>def</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +</dd><dt>defaulted</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsDefault">xmlTextReaderIsDefault</a><br /> +</dd><dt>defaultexternal</dt><dd><a href="html/libxml-parser.html#xmlSetExternalEntityLoader">xmlSetExternalEntityLoader</a><br /> +</dd><dt>defaults</dt><dd><a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLocalNameFunction">xmlXPathLocalNameFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNamespaceURIFunction">xmlXPathNamespaceURIFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringLengthFunction">xmlXPathStringLengthFunction</a><br /> +</dd><dt>define</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +<a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>defined</dt><dd><a href="html/libxml-xmlversion.html#WITHOUT_TRIO">WITHOUT_TRIO</a><br /> +<a href="html/libxml-xmlversion.html#WITH_TRIO">WITH_TRIO</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-tree.html#xmlGetNsList">xmlGetNsList</a><br /> +<a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br /> +<a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +<a href="html/libxml-tree.html#xmlSearchNsByHref">xmlSearchNsByHref</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsDefault">xmlTextReaderIsDefault</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +</dd><dt>defining</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_FALLBACK">XINCLUDE_FALLBACK</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_HREF">XINCLUDE_HREF</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_NODE">XINCLUDE_NODE</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_NS">XINCLUDE_NS</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_PARSE">XINCLUDE_PARSE</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_PARSE_ENCODING">XINCLUDE_PARSE_ENCODING</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_PARSE_TEXT">XINCLUDE_PARSE_TEXT</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_PARSE_XML">XINCLUDE_PARSE_XML</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_PARSE_XPOINTER">XINCLUDE_PARSE_XPOINTER</a><br /> +<a href="html/libxml-valid.html#xmlGetID">xmlGetID</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDu">xmlShellDu</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstNamespaceUri">xmlTextReaderConstNamespaceUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNamespaceUri">xmlTextReaderNamespaceUri</a><br /> +</dd><dt>definitions</dt><dd><a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +<a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>defs</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +</dd><dt>delayed</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> +</dd><dt>delegation</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +</dd><dt>delete</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +</dd><dt>deletion</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDefaultPrefer">xmlCatalogSetDefaultPrefer</a><br /> +</dd><dt>dependant</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>depending</dt><dd><a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +<a href="html/libxml-list.html#xmlListDataCompare">xmlListDataCompare</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEqualValues">xmlXPathEqualValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a><br /> +</dd><dt>deprecated</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> +<a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +</dd><dt>depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderDepth">xmlTextReaderDepth</a><br /> +</dd><dt>deregistration</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br /> +<a href="html/libxml-globals.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a><br /> +</dd><dt>derivation</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +</dd><dt>des</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +</dd><dt>desactivated</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetSchema">xmlTextReaderSetSchema</a><br /> +</dd><dt>descend</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +</dd><dt>descendant</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextDescendant">xmlXPathNextDescendant</a><br /> +</dd><dt>descendant-or-self</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a><br /> +</dd><dt>descendants</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextDescendant">xmlXPathNextDescendant</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br /> +</dd><dt>described</dt><dd><a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocument">xmlValidateDocument</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> +</dd><dt>describing</dt><dd><a href="html/libxml-DOCBparser.html#docbParseDoc">docbParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseDoc">htmlParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-encoding.html#xmlFindCharEncodingHandler">xmlFindCharEncodingHandler</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +</dd><dt>description</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlEntityDesc">_htmlEntityDesc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br /> +<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br /> +<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdNotationDesc">xmlGetDtdNotationDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdQAttrDesc">xmlGetDtdQAttrDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdQElementDesc">xmlGetDtdQElementDesc</a><br /> +<a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetLang">xmlNodeSetLang</a><br /> +</dd><dt>descriptor</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadFd">htmlCtxtReadFd</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadFd">htmlReadFd</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadFd">xmlCtxtReadFd</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplay">xmlMemDisplay</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemShow">xmlMemShow</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFd">xmlOutputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFd">xmlParserInputBufferCreateFd</a><br /> +<a href="html/libxml-parser.html#xmlReadFd">xmlReadFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFd">xmlReaderForFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFd">xmlReaderNewFd</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveToFd">xmlSaveToFd</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br /> +</dd><dt>designed</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +</dd><dt>desired</dt><dd><a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strpos">xmlUTF8Strpos</a><br /> +</dd><dt>destination</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpenW">xmlIOHTTPOpenW</a><br /> +<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> +</dd><dt>destroy</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +</dd><dt>destroyed</dt><dd><a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetup">xmlTextReaderSetup</a><br /> +</dd><dt>destruction</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br /> +</dd><dt>details</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>detect</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>detected</dt><dd><a href="html/libxml-xpathInternals.html#CHECK_ERROR">CHECK_ERROR</a><br /> +<a href="html/libxml-xpathInternals.html#CHECK_ERROR0">CHECK_ERROR0</a><br /> +<a href="html/libxml-SAX.html#endDocument">endDocument</a><br /> +<a href="html/libxml-parser.html#endDocumentSAXFunc">endDocumentSAXFunc</a><br /> +<a href="html/libxml-SAX.html#endElement">endElement</a><br /> +<a href="html/libxml-parser.html#endElementNsSAX2Func">endElementNsSAX2Func</a><br /> +<a href="html/libxml-parser.html#endElementSAXFunc">endElementSAXFunc</a><br /> +<a href="html/libxml-SAX.html#reference">reference</a><br /> +<a href="html/libxml-parser.html#referenceSAXFunc">referenceSAXFunc</a><br /> +<a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2EndDocument">xmlSAX2EndDocument</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2EndElement">xmlSAX2EndElement</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2EndElementNs">xmlSAX2EndElementNs</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2Reference">xmlSAX2Reference</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaIsValid">xmlSchemaIsValid</a><br /> +</dd><dt>detection</dt><dd><a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkGetDefaultDetect">xlinkGetDefaultDetect</a><br /> +<a href="html/libxml-xlink.html#xlinkNodeDetectFunc">xlinkNodeDetectFunc</a><br /> +<a href="html/libxml-xlink.html#xlinkSetDefaultDetect">xlinkSetDefaultDetect</a><br /> +<a href="html/libxml-xlink.html#xlinkSimpleLinkFunk">xlinkSimpleLinkFunk</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>determine</dt><dd><a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br /> +</dd><dt>determined</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +</dd><dt>determinist</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataIsDeterminist">xmlAutomataIsDeterminist</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br /> +</dd><dt>dict</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +</dd><dt>dictionary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br /> +<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br /> +<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> +<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> +<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>dictionnary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br /> +<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> +<a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br /> +<a href="html/libxml-dict.html#xmlDictFree">xmlDictFree</a><br /> +<a href="html/libxml-dict.html#xmlDictLookup">xmlDictLookup</a><br /> +<a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br /> +<a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br /> +<a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br /> +<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +</dd><dt>did</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br /> +</dd><dt>difference</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +</dd><dt>different</dt><dd><a href="html/libxml-tree.html#_xmlBuffer">_xmlBuffer</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br /> +<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br /> +<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br /> +<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br /> +</dd><dt>differentiate</dt><dd><a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>differently</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>differs</dt><dd><a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br /> +</dd><dt>digit</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>digits</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>dir</dt><dd><a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br /> +</dd><dt>direct</dt><dd><a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> +</dd><dt>direction</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextAncestor">xmlXPathNextAncestor</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAttribute">xmlXPathNextAttribute</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextChild">xmlXPathNextChild</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextDescendant">xmlXPathNextDescendant</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextDescendantOrSelf">xmlXPathNextDescendantOrSelf</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowingSibling">xmlXPathNextFollowingSibling</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextNamespace">xmlXPathNextNamespace</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextParent">xmlXPathNextParent</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPrecedingSibling">xmlXPathNextPrecedingSibling</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> +</dd><dt>directly</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +<a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> +</dd><dt>directories</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +</dd><dt>directory</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserGetDirectory">xmlParserGetDirectory</a><br /> +<a href="html/libxml-debugXML.html#xmlShellList">xmlShellList</a><br /> +</dd><dt>disable</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +</dd><dt>disabled</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +</dd><dt>disables</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>disabling</dt><dd><a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +</dd><dt>disallowed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a><br /> +</dd><dt>discard</dt><dd><a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +</dd><dt>discarded</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a><br /> +</dd><dt>discarding</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +</dd><dt>disconnected</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewState">xmlAutomataNewState</a><br /> +</dd><dt>discovering</dt><dd><a href="html/libxml-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchInputEncoding">xmlSwitchInputEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchToEncoding">xmlSwitchToEncoding</a><br /> +</dd><dt>disctionary</dt><dd><a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br /> +</dd><dt>display</dt><dd><a href="html/libxml-parser.html#errorSAXFunc">errorSAXFunc</a><br /> +<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-parser.html#warningSAXFunc">warningSAXFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemShow">xmlMemShow</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserError">xmlParserError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityError">xmlParserValidityError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br /> +</dd><dt>distinct</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a><br /> +</dd><dt>distinguish</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>div</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>doc</dt><dd><a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a><br /> +</dd><dt>doc-</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +<a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br /> +<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterTree">xmlNewTextWriterTree</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>docs</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>doctypedecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br /> +<a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br /> +</dd><dt>documents</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>doesn</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br /> +<a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +<a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> +<a href="html/libxml-tree.html#xmlRemoveProp">xmlRemoveProp</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> +</dd><dt>doing</dt><dd><a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecCallbacks">xmlRegExecCallbacks</a><br /> +</dd><dt>don</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br /> +<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>dotgnu</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br /> +</dd><dt>double</dt><dd><a href="">val</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNewFloat">xmlXPathNewFloat</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathReturnNumber">xmlXPathReturnNumber</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetCreate">xmlXPtrLocationSetCreate</a><br /> +</dd><dt>double-hyphen</dt><dd><a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +</dd><dt>double-quotes</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +</dd><dt>doublequotes</dt><dd><a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> +</dd><dt>doubt</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>down</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +</dd><dt>draft</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br /> +</dd><dt>drop</dt><dd><a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPRead">xmlIOFTPRead</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPRead">xmlIOHTTPRead</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br /> +</dd><dt>dtd</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNewDoc">htmlNewDoc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNewDocNoDtD">htmlNewDocNoDtD</a><br /> +<a href="html/libxml-tree.html#xmlCopyDtd">xmlCopyDtd</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>dtds</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>dump</dt><dd><a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> +<a href="html/libxml-tree.html#xmlBufferCCat">xmlBufferCCat</a><br /> +<a href="html/libxml-tree.html#xmlBufferDump">xmlBufferDump</a><br /> +<a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br /> +<a href="html/libxml-valid.html#xmlDumpAttributeDecl">xmlDumpAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlDumpAttributeTable">xmlDumpAttributeTable</a><br /> +<a href="html/libxml-valid.html#xmlDumpElementDecl">xmlDumpElementDecl</a><br /> +<a href="html/libxml-valid.html#xmlDumpElementTable">xmlDumpElementTable</a><br /> +<a href="html/libxml-entities.html#xmlDumpEntitiesTable">xmlDumpEntitiesTable</a><br /> +<a href="html/libxml-entities.html#xmlDumpEntityDecl">xmlDumpEntityDecl</a><br /> +<a href="html/libxml-valid.html#xmlDumpNotationDecl">xmlDumpNotationDecl</a><br /> +<a href="html/libxml-valid.html#xmlDumpNotationTable">xmlDumpNotationTable</a><br /> +<a href="html/libxml-debugXML.html#xmlLsOneNode">xmlLsOneNode</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemShow">xmlMemShow</a><br /> +<a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>dumping</dt><dd><a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +</dd><dt>dumps</dt><dd><a href="html/libxml-debugXML.html#xmlShellBase">xmlShellBase</a><br /> +<a href="html/libxml-debugXML.html#xmlShellCat">xmlShellCat</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br /> +</dd><dt>duplicate</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>duplicated</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>duplicates</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br /> +</dd><dt>duration</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>during</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaIsValid">xmlSchemaIsValid</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +</dd><dt>dynamic</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk14.html b/libxml2-2.7.7/doc/APIchunk14.html new file mode 100644 index 0000000..42194a3 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk14.html
@@ -0,0 +1,463 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index e-e for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index e-e for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter e:</h2><dl><dt>each</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br /> +<a href="html/libxml-hash.html#xmlHashScan">xmlHashScan</a><br /> +<a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull">xmlHashScanFull</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>edition</dt><dd><a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br /> +</dd><dt>effect</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>effective</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +</dd><dt>efficiency</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>either</dt><dd><a href="html/libxml-debugXML.html#xmlBoolToText">xmlBoolToText</a><br /> +<a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>either:</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +</dd><dt>elem</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_INTERNAL_CHECKED">XML_SCHEMAS_ELEM_INTERNAL_CHECKED</a><br /> +</dd><dt>elem-</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +</dd><dt>element-</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>element-node</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +</dd><dt>element-nodes</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>elementFormDefault</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a><br /> +</dd><dt>elementdecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>elements</dt><dd><a href="html/libxml-catalog.html#XML_CATALOGS_NAMESPACE">XML_CATALOGS_NAMESPACE</a><br /> +<a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a><br /> +<a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> +<a href="html/libxml-pattern.html#xmlFreePatternList">xmlFreePatternList</a><br /> +<a href="html/libxml-hash.html#xmlHashSize">xmlHashSize</a><br /> +<a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +<a href="html/libxml-list.html#xmlListMerge">xmlListMerge</a><br /> +<a href="html/libxml-list.html#xmlListReverse">xmlListReverse</a><br /> +<a href="html/libxml-list.html#xmlListSize">xmlListSize</a><br /> +<a href="html/libxml-list.html#xmlListSort">xmlListSort</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>else</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +</dd><dt>embedded</dt><dd><a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_0">XML_CTXT_FINISH_DTD_0</a><br /> +<a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_1">XML_CTXT_FINISH_DTD_1</a><br /> +</dd><dt>emitted</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +</dd><dt>empty-element</dt><dd><a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>enable</dt><dd><a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +</dd><dt>enabled</dt><dd><a href="html/libxml-tree.html#xmlSaveFile">xmlSaveFile</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +</dd><dt>enables</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>enabling</dt><dd><a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +<a href="html/libxml-parser.html#xmlPedanticParserDefault">xmlPedanticParserDefault</a><br /> +</dd><dt>enc</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +</dd><dt>encapsulate</dt><dd><a href="html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a><br /> +</dd><dt>encapsulating</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-parser.html#xmlNewIOInputStream">xmlNewIOInputStream</a><br /> +</dd><dt>enclose</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderQuoteChar">xmlTextReaderQuoteChar</a><br /> +</dd><dt>encode</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a><br /> +</dd><dt>encoded</dt><dd><a href="html/libxml-xmlIO.html#_xmlOutputBuffer">_xmlOutputBuffer</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-parserInternals.html#xmlSplitQName">xmlSplitQName</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBase64">xmlTextWriterWriteBase64</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteBinHex">xmlTextWriterWriteBinHex</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsub">xmlUTF8Strsub</a><br /> +</dd><dt>encoder</dt><dd><a href="html/libxml-xmlIO.html#_xmlOutputBuffer">_xmlOutputBuffer</a><br /> +<a href="html/libxml-xmlIO.html#_xmlParserInputBuffer">_xmlParserInputBuffer</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +</dd><dt>encoder==NULL</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>enconding</dt><dd><a href="html/libxml-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>encountered</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>encountering</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>end-tag</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br /> +</dd><dt>end-up</dt><dd><a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +</dd><dt>ended</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>ending</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrNewCollapsedRange">xmlXPtrNewCollapsedRange</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRange">xmlXPtrNewRange</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRangeNodeObject">xmlXPtrNewRangeNodeObject</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRangeNodePoint">xmlXPtrNewRangeNodePoint</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRangeNodes">xmlXPtrNewRangeNodes</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRangePointNode">xmlXPtrNewRangePointNode</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRangePoints">xmlXPtrNewRangePoints</a><br /> +</dd><dt>ends</dt><dd><a href="html/libxml-parser.html#_xmlParserNodeInfo">_xmlParserNodeInfo</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPClose">xmlNanoHTTPClose</a><br /> +</dd><dt>engine</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a><br /> +<a href="html/libxml-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a><br /> +</dd><dt>englobing</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +<a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> +<a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br /> +</dd><dt>enhancements</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>enough</dt><dd><a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +</dd><dt>ensure</dt><dd><a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>ensures</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +</dd><dt>ensuring</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>entire</dt><dd><a href="html/libxml-xmlIO.html#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a><br /> +</dd><dt>entites</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +</dd><dt>entities:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +</dd><dt>entproc</dt><dd><a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +</dd><dt>entries</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogConvert">xmlCatalogConvert</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br /> +<a href="html/libxml-catalog.html#xmlConvertSGMLCatalog">xmlConvertSGMLCatalog</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemShow">xmlMemShow</a><br /> +</dd><dt>entry</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogRemove">xmlACatalogRemove</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAdd">xmlCatalogAdd</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogAddLocal">xmlCatalogAddLocal</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetRemove">xmlXPathNodeSetRemove</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetRemove">xmlXPtrLocationSetRemove</a><br /> +</dd><dt>enumerated</dt><dd><a href="html/libxml-SAX.html#attributeDecl">attributeDecl</a><br /> +<a href="html/libxml-parser.html#attributeDeclSAXFunc">attributeDeclSAXFunc</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2AttributeDecl">xmlSAX2AttributeDecl</a><br /> +</dd><dt>enumeration</dt><dd><a href="html/libxml-tree.html#_xmlAttribute">_xmlAttribute</a><br /> +<a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br /> +<a href="html/libxml-valid.html#xmlCreateEnumeration">xmlCreateEnumeration</a><br /> +<a href="html/libxml-valid.html#xmlFreeEnumeration">xmlFreeEnumeration</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> +</dd><dt>environment</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +<a href="html/libxml-xpath.html#xmlXPathInit">xmlXPathInit</a><br /> +</dd><dt>epsilon</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCounterTrans">xmlAutomataNewCounterTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewEpsilon">xmlAutomataNewEpsilon</a><br /> +</dd><dt>equal</dt><dd><a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstName">xmlTextReaderConstName</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderName">xmlTextReaderName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEqualValues">xmlXPathEqualValues</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPositionFunction">xmlXPathPositionFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>equality</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-list.html#xmlListDataCompare">xmlListDataCompare</a><br /> +</dd><dt>equivalent</dt><dd><a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemFree">xmlMemFree</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemStrdupLoc">xmlMemStrdupLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryStrdup">xmlMemoryStrdup</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strpos">xmlUTF8Strpos</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCastToString">xmlXPathCastToString</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertBoolean">xmlXPathConvertBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertNumber">xmlXPathConvertNumber</a><br /> +<a href="html/libxml-xpath.html#xmlXPathConvertString">xmlXPathConvertString</a><br /> +</dd><dt>errror</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br /> +</dd><dt>escape</dt><dd><a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +<a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>escaped</dt><dd><a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br /> +<a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-uri.html#xmlSaveUri">xmlSaveUri</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +<a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>escapes</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>escaping</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveSetAttrEscape">xmlSaveSetAttrEscape</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveSetEscape">xmlSaveSetEscape</a><br /> +</dd><dt>especially</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>established</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +</dd><dt>etc</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaFacet">_xmlSchemaFacet</a><br /> +<a href="html/libxml-tree.html#xmlDocGetRootElement">xmlDocGetRootElement</a><br /> +<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>evaluate</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathEvalExpr">xmlXPathEvalExpr</a><br /> +</dd><dt>evaluated</dt><dd><a href="html/libxml-xpath.html#xmlXPathCompiledEvalToBoolean">xmlXPathCompiledEvalToBoolean</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> +</dd><dt>evaluating</dt><dd><a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +</dd><dt>evaluation</dt><dd><a href="html/libxml-xpath.html#_xmlXPathFunct">_xmlXPathFunct</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br /> +<a href="html/libxml-xpathInternals.html#valuePop">valuePop</a><br /> +<a href="html/libxml-xpathInternals.html#valuePush">valuePush</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPrintXPathResult">xmlShellPrintXPathResult</a><br /> +<a href="html/libxml-xpath.html#xmlXPathCompiledEval">xmlXPathCompiledEval</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEval">xmlXPathEval</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalFunc">xmlXPathEvalFunc</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrBuildNodeList">xmlXPtrBuildNodeList</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br /> +</dd><dt>evaulation</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegFreeExecCtxt">xmlRegFreeExecCtxt</a><br /> +</dd><dt>even</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br /> +</dd><dt>event</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +</dd><dt>events</dt><dd><a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +</dd><dt>ever</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +</dd><dt>everywhere</dt><dd><a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +</dd><dt>exact</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +</dd><dt>examined</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +</dd><dt>example</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringBeforeFunction">xmlXPathSubstringBeforeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>examples</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>except</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-catalog.html#xmlParseCatalogFile">xmlParseCatalogFile</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +</dd><dt>exception</dt><dd><a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>excluding</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR">IS_CHAR</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextFollowing">xmlXPathNextFollowing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextPreceding">xmlXPathNextPreceding</a><br /> +</dd><dt>exclusions</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a><br /> +</dd><dt>exclusions:</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a><br /> +</dd><dt>exclusive</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>executed</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataCompile">xmlAutomataCompile</a><br /> +</dd><dt>execution</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> +</dd><dt>exist</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +</dd><dt>existent</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +</dd><dt>exists</dt><dd><a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstXmlLang">xmlTextReaderConstXmlLang</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderXmlLang">xmlTextReaderXmlLang</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +</dd><dt>exit</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>expand</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>expanded</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNamespaceURIFunction">xmlXPathNamespaceURIFunction</a><br /> +</dd><dt>expected</dt><dd><a href="">x</a><br /> +<a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewMemParserCtxt">xmlRelaxNGNewMemParserCtxt</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewMemParserCtxt">xmlSchematronNewMemParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>explicitly</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>explored</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>exposing</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a><br /> +</dd><dt>expressing</dt><dd><a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>expressions</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</dd><dt>exslSetsDistinctSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> +</dd><dt>exslSetsLeadingSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +</dd><dt>exslSetsNodeLeadingSorted</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +</dd><dt>ext</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>extParsedEnt</dt><dd><a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseEntity">xmlParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +</dd><dt>extSubset</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> +</dd><dt>extSubsetDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> +</dd><dt>extend</dt><dd><a href="html/libxml-xmlstring.html#xmlStrncat">xmlStrncat</a><br /> +<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br /> +</dd><dt>extended</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetMerge">xmlXPathNodeSetMerge</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetMerge">xmlXPtrLocationSetMerge</a><br /> +</dd><dt>extension</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a><br /> +</dd><dt>extensions</dt><dd><a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br /> +</dd><dt>extent</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +</dd><dt>extract</dt><dd><a href="html/libxml-tree.html#XML_GET_CONTENT">XML_GET_CONTENT</a><br /> +<a href="html/libxml-tree.html#XML_GET_LINE">XML_GET_LINE</a><br /> +<a href="html/libxml-tree.html#xmlBufferContent">xmlBufferContent</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk15.html b/libxml2-2.7.7/doc/APIchunk15.html new file mode 100644 index 0000000..8bb4437 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk15.html
@@ -0,0 +1,446 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index f-f for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index f-f for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter f:</h2><dl><dt>fTP</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a><br /> +</dd><dt>facet</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaFacetLink">_xmlSchemaFacetLink</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeFacet">xmlSchemaFreeFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +</dd><dt>facets</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_HAS_FACETS">XML_SCHEMAS_TYPE_HAS_FACETS</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br /> +</dd><dt>facility</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> +</dd><dt>fail</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPrintXPathError">xmlShellPrintXPathError</a><br /> +</dd><dt>failed</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPConnectTo">xmlNanoFTPConnectTo</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +<a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br /> +<a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br /> +<a href="html/libxml-debugXML.html#xmlShellLoad">xmlShellLoad</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcess">xmlXIncludeProcess</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlags">xmlXIncludeProcessFlags</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlagsData">xmlXIncludeProcessFlagsData</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTree">xmlXIncludeProcessTree</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlags">xmlXIncludeProcessTreeFlags</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>fails</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br /> +<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br /> +<a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>fallback</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_FALLBACK">XINCLUDE_FALLBACK</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseEntity">xmlSAXParseEntity</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +</dd><dt>far</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaIsValid">xmlSchemaIsValid</a><br /> +</dd><dt>fashion</dt><dd><a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +</dd><dt>fast</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +</dd><dt>faster</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +</dd><dt>fatal</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +</dd><dt>fatalError</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +</dd><dt>favor</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br /> +</dd><dt>feature</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br /> +<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +<a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> +</dd><dt>features</dt><dd><a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +</dd><dt>fed</dt><dd><a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br /> +<a href="html/libxml-xmlreader.html#xmlNewTextReaderFilename">xmlNewTextReaderFilename</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +</dd><dt>feed</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSetup">xmlTextReaderSetup</a><br /> +</dd><dt>fetch</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPOpen">xmlNanoFTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +</dd><dt>fetching</dt><dd><a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strpos">xmlUTF8Strpos</a><br /> +</dd><dt>field</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_0">XML_CTXT_FINISH_DTD_0</a><br /> +<a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_1">XML_CTXT_FINISH_DTD_1</a><br /> +<a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> +<a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMisc">xmlParseMisc</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlagsData">xmlXIncludeProcessFlagsData</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>fields</dt><dd><a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br /> +<a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> +</dd><dt>files</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +</dd><dt>filesystem</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadFile">htmlReadFile</a><br /> +<a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +<a href="html/libxml-parser.html#xmlReadFile">xmlReadFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFile">xmlReaderNewFile</a><br /> +</dd><dt>filled</dt><dd><a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +</dd><dt>fills</dt><dd><a href="html/libxml-uri.html#xmlParseURIReference">xmlParseURIReference</a><br /> +</dd><dt>filters</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br /> +</dd><dt>final</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataSetFinalState">xmlAutomataSetFinalState</a><br /> +<a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>finalDefault</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a><br /> +</dd><dt>find</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +<a href="html/libxml-tree.html#xmlIsXHTML">xmlIsXHTML</a><br /> +</dd><dt>finding</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd><dt>finds</dt><dd><a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +<a href="html/libxml-tree.html#xmlSearchNsByHref">xmlSearchNsByHref</a><br /> +</dd><dt>finishDtd</dt><dd><a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_0">XML_CTXT_FINISH_DTD_0</a><br /> +<a href="html/libxml-valid.html#XML_CTXT_FINISH_DTD_1">XML_CTXT_FINISH_DTD_1</a><br /> +</dd><dt>finished</dt><dd><a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> +</dd><dt>finishing</dt><dd><a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>finite</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>firs</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>fist</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +</dd><dt>fit</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>fixed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>fixup</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FIXUP_1">XML_SCHEMAS_TYPE_FIXUP_1</a><br /> +</dd><dt>flag</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> +<a href="html/libxml-SAX.html#initxmlDefaultSAXHandler">initxmlDefaultSAXHandler</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2InitDefaultSAXHandler">xmlSAX2InitDefaultSAXHandler</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsValid">xmlTextReaderIsValid</a><br /> +</dd><dt>flagged</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlGetMetaEncoding">htmlGetMetaEncoding</a><br /> +</dd><dt>flags</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForDoc">xmlReaderForDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFd">xmlReaderForFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForIO">xmlReaderForIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForMemory">xmlReaderForMemory</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewDoc">xmlReaderNewDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFd">xmlReaderNewFd</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFile">xmlReaderNewFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewIO">xmlReaderNewIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewMemory">xmlReaderNewMemory</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxParserSetFlag">xmlRelaxParserSetFlag</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a><br /> +</dd><dt>flat</dt><dd><a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br /> +<a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br /> +</dd><dt>floor</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +</dd><dt>flow</dt><dd><a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +</dd><dt>flushed</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br /> +</dd><dt>flushes</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferClose">xmlOutputBufferClose</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferFlush">xmlOutputBufferFlush</a><br /> +</dd><dt>follow</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewNegTrans">xmlAutomataNewNegTrans</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> +</dd><dt>following-sibling</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextFollowingSibling">xmlXPathNextFollowingSibling</a><br /> +</dd><dt>follows</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringAfterFunction">xmlXPathSubstringAfterFunction</a><br /> +</dd><dt>follows:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>fonctionnalities</dt><dd><a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> +</dd><dt>for:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>forbid</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_NOVAR">XML_XPATH_NOVAR</a><br /> +</dd><dt>force</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +</dd><dt>forced</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>form</dt><dd><a href="html/libxml-DOCBparser.html#docbParseDoc">docbParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseFile">docbSAXParseFile</a><br /> +<a href="html/libxml-parserInternals.html#htmlCreateFileParserCtxt">htmlCreateFileParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseDoc">htmlParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseFile">htmlParseFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>formal</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> +</dd><dt>formatted</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttribute">xmlTextWriterWriteFormatAttribute</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatAttributeNS">xmlTextWriterWriteFormatAttributeNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatCDATA">xmlTextWriterWriteFormatCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTD">xmlTextWriterWriteFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTDAttlist">xmlTextWriterWriteFormatDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTDElement">xmlTextWriterWriteFormatDTDElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTDInternalEntity">xmlTextWriterWriteFormatDTDInternalEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatElement">xmlTextWriterWriteFormatElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatElementNS">xmlTextWriterWriteFormatElementNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatPI">xmlTextWriterWriteFormatPI</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatRaw">xmlTextWriterWriteFormatRaw</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatString">xmlTextWriterWriteFormatString</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttribute">xmlTextWriterWriteVFormatAttribute</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttributeNS">xmlTextWriterWriteVFormatAttributeNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatCDATA">xmlTextWriterWriteVFormatCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDAttlist">xmlTextWriterWriteVFormatDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDElement">xmlTextWriterWriteVFormatDTDElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDInternalEntity">xmlTextWriterWriteVFormatDTDInternalEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatElement">xmlTextWriterWriteVFormatElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatElementNS">xmlTextWriterWriteVFormatElementNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatPI">xmlTextWriterWriteVFormatPI</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatRaw">xmlTextWriterWriteVFormatRaw</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatString">xmlTextWriterWriteVFormatString</a><br /> +</dd><dt>formatting</dt><dd><a href="html/libxml-HTMLtree.html#htmlDocContentDumpFormatOutput">htmlDocContentDumpFormatOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlDocDumpMemoryFormat">htmlDocDumpMemoryFormat</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDump">htmlNodeDump</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFile">htmlNodeDumpFile</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFileFormat">htmlNodeDumpFileFormat</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpFormatOutput">htmlNodeDumpFormatOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNodeDumpOutput">htmlNodeDumpOutput</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSaveFileEnc">htmlSaveFileEnc</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSaveFileFormat">htmlSaveFileFormat</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br /> +</dd><dt>formed</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseFile">htmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>forward</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +</dd><dt>fptr</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>fragment</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br /> +<a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br /> +<a href="html/libxml-uri.html#xmlParseURI">xmlParseURI</a><br /> +<a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br /> +</dd><dt>fragments</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +</dd><dt>freeing</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>frees</dt><dd><a href="html/libxml-tree.html#xmlBufferFree">xmlBufferFree</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>front</dt><dd><a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br /> +<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br /> +<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br /> +<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br /> +</dd><dt>front-end</dt><dd><a href="html/libxml-encoding.html#xmlCharEncCloseFunc">xmlCharEncCloseFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>ftp:</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPOpen">xmlNanoFTPOpen</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +</dd><dt>ftp_proxy</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +</dd><dt>ftp_proxy_password</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +</dd><dt>ftp_proxy_user</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +</dd><dt>full</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br /> +<a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-hash.html#xmlHashScannerFull">xmlHashScannerFull</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushElement">xmlRelaxNGValidatePushElement</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderExpand">xmlTextReaderExpand</a><br /> +<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strlen">xmlUTF8Strlen</a><br /> +</dd><dt>fully</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> +</dd><dt>func</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>funcs</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>function:</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathHasSameNodes">xmlXPathHasSameNodes</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> +</dd><dt>functionality</dt><dd><a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetGetLength">xmlXPathNodeSetGetLength</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br /> +</dd><dt>functions</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadIO">htmlCtxtReadIO</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadIO">htmlReadIO</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadIO">xmlCtxtReadIO</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-parser.html#xmlReadIO">xmlReadIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForIO">xmlReaderForIO</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewIO">xmlReaderNewIO</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserErrors">xmlRelaxNGSetParserErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetParserStructuredErrors">xmlRelaxNGSetParserStructuredErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidStructuredErrors">xmlRelaxNGSetValidStructuredErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserErrors">xmlSchemaSetParserErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetParserStructuredErrors">xmlSchemaSetParserStructuredErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidStructuredErrors">xmlSchemaSetValidStructuredErrors</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronSetValidStructuredErrors">xmlSchematronSetValidStructuredErrors</a><br /> +<a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchEncoding">xmlSwitchEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchInputEncoding">xmlSwitchInputEncoding</a><br /> +<a href="html/libxml-parserInternals.html#xmlSwitchToEncoding">xmlSwitchToEncoding</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterAllFunctions">xmlXPathRegisterAllFunctions</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisteredFuncsCleanup">xmlXPathRegisteredFuncsCleanup</a><br /> +</dd><dt>further</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parser.html#xmlStopParser">xmlStopParser</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a><br /> +</dd><dt>future</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk16.html b/libxml2-2.7.7/doc/APIchunk16.html new file mode 100644 index 0000000..ea2d948 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk16.html
@@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index g-h for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index g-h for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter g:</h2><dl><dt>gDay</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>gMonth</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>gMonthDay</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>gYear</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>gYearMonth</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +</dd><dt>garanteed</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +</dd><dt>garbage</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +</dd><dt>gcc</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>gcc4</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +</dd><dt>genChRanges</dt><dd><a href="html/libxml-chvalid.html#xmlIsBaseCharQ">xmlIsBaseCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlankQ">xmlIsBlankQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlank_ch">xmlIsBlank_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCharQ">xmlIsCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsChar_ch">xmlIsChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCombiningQ">xmlIsCombiningQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigitQ">xmlIsDigitQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigit_ch">xmlIsDigit_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtenderQ">xmlIsExtenderQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtender_ch">xmlIsExtender_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsIdeographicQ">xmlIsIdeographicQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidCharQ">xmlIsPubidCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a><br /> +</dd><dt>general</dt><dd><a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_BOTH">XML_SUBSTITUTE_BOTH</a><br /> +<a href="html/libxml-parserInternals.html#XML_SUBSTITUTE_REF">XML_SUBSTITUTE_REF</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncInFunc">xmlCharEncInFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>generally</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>generate</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +</dd><dt>generated</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseCharQ">xmlIsBaseCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlankQ">xmlIsBlankQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlank_ch">xmlIsBlank_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCharQ">xmlIsCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsChar_ch">xmlIsChar_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCombiningQ">xmlIsCombiningQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigitQ">xmlIsDigitQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigit_ch">xmlIsDigit_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtenderQ">xmlIsExtenderQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtender_ch">xmlIsExtender_ch</a><br /> +<a href="html/libxml-chvalid.html#xmlIsIdeographicQ">xmlIsIdeographicQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidCharQ">xmlIsPubidCharQ</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-tree.html#xmlSearchNs">xmlSearchNs</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPrintXPathResult">xmlShellPrintXPathResult</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsDefault">xmlTextReaderIsDefault</a><br /> +</dd><dt>generates</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> +</dd><dt>generating</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +</dd><dt>generic</dt><dd><a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br /> +<a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> +<a href="html/libxml-debugXML.html#xmlShellReadlineFunc">xmlShellReadlineFunc</a><br /> +</dd><dt>get</dt><dd><a href="html/libxml-parser.html#_xmlSAXHandler">_xmlSAXHandler</a><br /> +<a href="html/libxml-parser.html#_xmlSAXHandlerV1">_xmlSAXHandlerV1</a><br /> +<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-tree.html#xmlBufferLength">xmlBufferLength</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogGetDefaults">xmlCatalogGetDefaults</a><br /> +<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +<a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br /> +<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br /> +<a href="html/libxml-parserInternals.html#xmlSplitQName">xmlSplitQName</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName2">xmlSplitQName2</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetParserProp">xmlTextReaderGetParserProp</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br /> +</dd><dt>gif</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>give</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>gives</dt><dd><a href="html/libxml-xmlerror.html#xmlParserError">xmlParserError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityError">xmlParserValidityError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br /> +</dd><dt>giving</dt><dd><a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br /> +</dd><dt>global</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a><br /> +<a href="html/libxml-tree.html#_xmlNs">_xmlNs</a><br /> +<a href="html/libxml-SAX.html#globalNamespace">globalNamespace</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogDump">xmlCatalogDump</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br /> +<a href="html/libxml-threads.html#xmlGetGlobalState">xmlGetGlobalState</a><br /> +<a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br /> +<a href="html/libxml-globals.html#xmlInitializeGlobalState">xmlInitializeGlobalState</a><br /> +<a href="html/libxml-xmlerror.html#xmlResetLastError">xmlResetLastError</a><br /> +</dd><dt>globally</dt><dd><a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>gnu</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br /> +</dd><dt>good</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>grafted</dt><dd><a href="html/libxml-tree.html#xmlCopyProp">xmlCopyProp</a><br /> +<a href="html/libxml-tree.html#xmlCopyPropList">xmlCopyPropList</a><br /> +</dd><dt>grammar:</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +</dd><dt>greater</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>greater-than</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>group</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_HAS_REFS">XML_SCHEMAS_ATTRGROUP_HAS_REFS</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_REDEFINED">XML_SCHEMAS_ATTRGROUP_REDEFINED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaAttributeGroup">_xmlSchemaAttributeGroup</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +<a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>groups</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>grow</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>grows</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +</dd><dt>guess</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd></dl><h2>Letter h:</h2><dl><dt>had</dt><dd><a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br /> +</dd><dt>hand</dt><dd><a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +</dd><dt>handled</dt><dd><a href="html/libxml-catalog.html#xmlLoadACatalog">xmlLoadACatalog</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>handlers</dt><dd><a href="html/libxml-xlink.html#xlinkSetDefaultHandler">xlinkSetDefaultHandler</a><br /> +<a href="html/libxml-encoding.html#xmlCleanupCharEncodingHandlers">xmlCleanupCharEncodingHandlers</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterDefaultInputCallbacks">xmlRegisterDefaultInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterDefaultOutputCallbacks">xmlRegisterDefaultOutputCallbacks</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetErrorHandler">xmlTextReaderSetErrorHandler</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderSetStructuredErrorHandler">xmlTextReaderSetStructuredErrorHandler</a><br /> +</dd><dt>handles</dt><dd><a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +<a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> +<a href="html/libxml-tree.html#xmlUnsetProp">xmlUnsetProp</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>handling</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a><br /> +<a href="html/libxml-SAX.html#attribute">attribute</a><br /> +<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br /> +<a href="html/libxml-tree.html#xmlChildElementCount">xmlChildElementCount</a><br /> +<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br /> +<a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br /> +<a href="html/libxml-tree.html#xmlNextElementSibling">xmlNextElementSibling</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameDefault">xmlOutputBufferCreateFilenameDefault</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameDefault">xmlParserInputBufferCreateFilenameDefault</a><br /> +<a href="html/libxml-tree.html#xmlPreviousElementSibling">xmlPreviousElementSibling</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterInputCallbacks">xmlRegisterInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterOutputCallbacks">xmlRegisterOutputCallbacks</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopBoolean">xmlXPathPopBoolean</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopExternal">xmlXPathPopExternal</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNodeSet">xmlXPathPopNodeSet</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNumber">xmlXPathPopNumber</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopString">xmlXPathPopString</a><br /> +</dd><dt>hard</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>has-same-nodes</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathHasSameNodes">xmlXPathHasSameNodes</a><br /> +</dd><dt>haystack</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrstr">xmlStrstr</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrsub">xmlStrsub</a><br /> +</dd><dt>head</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD">XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>header</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPAuthHeader">xmlNanoHTTPAuthHeader</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPRedir">xmlNanoHTTPRedir</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseXMLDecl">xmlParseXMLDecl</a><br /> +</dd><dt>headers</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPEncoding">xmlNanoHTTPEncoding</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a><br /> +</dd><dt>heading</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +</dd><dt>helper</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a><br /> +</dd><dt>here</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAncestorOrSelf">xmlXPathNextAncestorOrSelf</a><br /> +</dd><dt>heuristic</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>heuristic:</dt><dd><a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +</dd><dt>hex</dt><dd><a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>hierarchy</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +</dd><dt>highly</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br /> +</dd><dt>hold</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterDoc">xmlNewTextWriterDoc</a><br /> +<a href="html/libxml-xmlwriter.html#xmlNewTextWriterPushParser">xmlNewTextWriterPushParser</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>holding</dt><dd><a href="html/libxml-tree.html#_xmlAttribute">_xmlAttribute</a><br /> +<a href="html/libxml-tree.html#_xmlID">_xmlID</a><br /> +<a href="html/libxml-tree.html#_xmlRef">_xmlRef</a><br /> +<a href="html/libxml-valid.html#xmlAddID">xmlAddID</a><br /> +<a href="html/libxml-valid.html#xmlAddRef">xmlAddRef</a><br /> +<a href="html/libxml-tree.html#xmlNewNsProp">xmlNewNsProp</a><br /> +<a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br /> +<a href="html/libxml-tree.html#xmlNewProp">xmlNewProp</a><br /> +</dd><dt>holds</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +</dd><dt>host</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd><dt>hosting</dt><dd><a href="html/libxml-xpath.html#xmlXPathFuncLookupFunc">xmlXPathFuncLookupFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a><br /> +<a href="html/libxml-xpath.html#xmlXPathVariableLookupFunc">xmlXPathVariableLookupFunc</a><br /> +</dd><dt>hostname</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +</dd><dt>hour</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>how</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +</dd><dt>href</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_HREF">XINCLUDE_HREF</a><br /> +</dd><dt>href==NULL</dt><dd><a href="html/libxml-tree.html#xmlNewNs">xmlNewNs</a><br /> +</dd><dt>hrefs</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +</dd><dt>html</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br /> +</dd><dt>htmlAttrAllowed</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>htmlElemDescPtr</dt><dd><a href="html/libxml-HTMLparser.html#htmlTagLookup">htmlTagLookup</a><br /> +</dd><dt>htmlElementAllowedHere</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>htmlElementStatusHere</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>htmlEntityDescPtr</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br /> +</dd><dt>htmlNodePtr</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>htmlParserCtxtPtr</dt><dd><a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br /> +</dd><dt>htmlParserOption</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadFd">htmlCtxtReadFd</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadIO">htmlCtxtReadIO</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadMemory">htmlCtxtReadMemory</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtUseOptions">htmlCtxtUseOptions</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadDoc">htmlReadDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadFd">htmlReadFd</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadFile">htmlReadFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadIO">htmlReadIO</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadMemory">htmlReadMemory</a><br /> +</dd><dt>htmlStartClose</dt><dd><a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +</dd><dt>htmlStartCloseIndex</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +</dd><dt>http:</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_NS">XINCLUDE_NS</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br /> +<a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNodeType">xmlTextReaderNodeType</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>human-readable</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk17.html b/libxml2-2.7.7/doc/APIchunk17.html new file mode 100644 index 0000000..5424f37 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk17.html
@@ -0,0 +1,564 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index i-i for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index i-i for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter i:</h2><dl><dt>iconv</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ICONV_ENABLED">LIBXML_ICONV_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a><br /> +</dd><dt>identify</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +</dd><dt>identity-constraint</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +</dd><dt>ignorable</dt><dd><a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br /> +<a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br /> +<a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br /> +</dd><dt>ignorableWhitespace</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>ignored</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>ignoring</dt><dd><a href="html/libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a><br /> +</dd><dt>image</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>imbrication</dt><dd><a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +</dd><dt>img</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>immediately</dt><dd><a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>immutable</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +</dd><dt>implementation</dt><dd><a href="html/libxml-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocFunc">xmlReallocFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlStrdupFunc">xmlStrdupFunc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFunc">xmlXPathRegisterFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFuncNS">xmlXPathRegisterFuncNS</a><br /> +</dd><dt>implementation-defined</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextNamespace">xmlXPathNextNamespace</a><br /> +</dd><dt>implemented</dt><dd><a href="html/libxml-HTMLtree.html#HTML_COMMENT_NODE">HTML_COMMENT_NODE</a><br /> +<a href="html/libxml-HTMLtree.html#HTML_ENTITY_REF_NODE">HTML_ENTITY_REF_NODE</a><br /> +<a href="html/libxml-HTMLtree.html#HTML_PI_NODE">HTML_PI_NODE</a><br /> +<a href="html/libxml-HTMLtree.html#HTML_PRESERVE_NODE">HTML_PRESERVE_NODE</a><br /> +<a href="html/libxml-HTMLtree.html#HTML_TEXT_NODE">HTML_TEXT_NODE</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> +</dd><dt>implicitly</dt><dd><a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +</dd><dt>implied</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>impossible</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>improves</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +</dd><dt>in-</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +</dd><dt>in-extenso</dt><dd><a href="html/libxml-xmlmemory.html#xmlMemDisplay">xmlMemDisplay</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a><br /> +</dd><dt>in-memory</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseDoc">docbParseDoc</a><br /> +<a href="html/libxml-DOCBparser.html#docbSAXParseDoc">docbSAXParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCreateMemoryParserCtxt">htmlCreateMemoryParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadDoc">htmlCtxtReadDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCtxtReadMemory">htmlCtxtReadMemory</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseDoc">htmlParseDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadDoc">htmlReadDoc</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadMemory">htmlReadMemory</a><br /> +<a href="html/libxml-HTMLparser.html#htmlSAXParseDoc">htmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlCreateDocParserCtxt">xmlCreateDocParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlCreateMemoryParserCtxt">xmlCreateMemoryParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadDoc">xmlCtxtReadDoc</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadMemory">xmlCtxtReadMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseDoc">xmlParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlParseMemory">xmlParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlReadDoc">xmlReadDoc</a><br /> +<a href="html/libxml-parser.html#xmlReadMemory">xmlReadMemory</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForDoc">xmlReaderForDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForMemory">xmlReaderForMemory</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewDoc">xmlReaderNewDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewMemory">xmlReaderNewMemory</a><br /> +<a href="html/libxml-parser.html#xmlRecoverDoc">xmlRecoverDoc</a><br /> +<a href="html/libxml-parser.html#xmlRecoverMemory">xmlRecoverMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXUserParseMemory">xmlSAXUserParseMemory</a><br /> +</dd><dt>incase</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPClose">xmlNanoFTPClose</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCloseConnection">xmlNanoFTPCloseConnection</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCwd">xmlNanoFTPCwd</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGet">xmlNanoFTPGet</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPSave">xmlNanoHTTPSave</a><br /> +</dd><dt>incl</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>include</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_NODE">XINCLUDE_NODE</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +<a href="html/libxml-list.html#xmlListMerge">xmlListMerge</a><br /> +</dd><dt>include:</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>included</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NIsVisibleCallback">xmlC14NIsVisibleCallback</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemory">xmlDocDumpMemory</a><br /> +<a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +</dd><dt>includes</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-xmlIO.html#xmlCleanupInputCallbacks">xmlCleanupInputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlCleanupOutputCallbacks">xmlCleanupOutputCallbacks</a><br /> +<a href="html/libxml-xmlIO.html#xmlPopInputCallbacks">xmlPopInputCallbacks</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlags">xmlXIncludeProcessFlags</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessFlagsData">xmlXIncludeProcessFlagsData</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlags">xmlXIncludeProcessTreeFlags</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessTreeFlagsData">xmlXIncludeProcessTreeFlagsData</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeSetFlags">xmlXIncludeSetFlags</a><br /> +</dd><dt>including</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a><br /> +<a href="html/libxml-SAX.html#attribute">attribute</a><br /> +<a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br /> +<a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +<a href="html/libxml-SAX.html#startElement">startElement</a><br /> +<a href="html/libxml-parser.html#startElementSAXFunc">startElementSAXFunc</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElement">xmlSAX2StartElement</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>inclusive</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>increase</dt><dd><a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +</dd><dt>increment</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountedTrans">xmlAutomataNewCountedTrans</a><br /> +</dd><dt>incremental</dt><dd><a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +</dd><dt>indent</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br /> +</dd><dt>indentation</dt><dd><a href="html/libxml-debugXML.html#xmlDebugDumpAttr">xmlDebugDumpAttr</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNode">xmlDebugDumpNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndentString">xmlTextWriterSetIndentString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>indentation?</dt><dd><a href="html/libxml-xmlwriter.html#xmlTextWriterSetIndent">xmlTextWriterSetIndent</a><br /> +</dd><dt>indented</dt><dd><a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +</dd><dt>indenting</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocFormatDump">xmlDocFormatDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br /> +</dd><dt>independently</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +</dd><dt>index</dt><dd><a href="">index</a><br /> +<a href="html/libxml-parserInternals.html#inputPush">inputPush</a><br /> +<a href="html/libxml-parserInternals.html#namePush">namePush</a><br /> +<a href="html/libxml-parserInternals.html#nodePush">nodePush</a><br /> +<a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> +<a href="html/libxml-parserInternals.html#xmlPushInput">xmlPushInput</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrsub">xmlStrsub</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetAttributeNo">xmlTextReaderGetAttributeNo</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderMoveToAttributeNo">xmlTextReaderMoveToAttributeNo</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetRemove">xmlXPathNodeSetRemove</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetRemove">xmlXPtrLocationSetRemove</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewRange">xmlXPtrNewRange</a><br /> +</dd><dt>indicate</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ATTR_ALLOC_SIZE">LIBXML_ATTR_ALLOC_SIZE</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> +<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br /> +</dd><dt>indicated</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>indicates</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a><br /> +<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPContentLength">xmlNanoHTTPContentLength</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd><dt>indicating</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> +<a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +<a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>indication</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br /> +</dd><dt>indicative</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferRead">xmlParserInputBufferRead</a><br /> +<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +</dd><dt>indicator</dt><dd><a href="html/libxml-DOCBparser.html#docbParseChunk">docbParseChunk</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseChunk">htmlParseChunk</a><br /> +<a href="html/libxml-parser.html#xmlParseChunk">xmlParseChunk</a><br /> +</dd><dt>indirect</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +</dd><dt>indirectly</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>infinite</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>infinity</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>info</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-parser.html#xmlClearNodeInfoSeq">xmlClearNodeInfoSeq</a><br /> +<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br /> +<a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemStrdupLoc">xmlMemStrdupLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryStrdup">xmlMemoryStrdup</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +<a href="html/libxml-parser.html#xmlParserAddNodeInfo">xmlParserAddNodeInfo</a><br /> +<a href="html/libxml-parser.html#xmlParserFindNodeInfo">xmlParserFindNodeInfo</a><br /> +<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +</dd><dt>information</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION_EXTRA">LIBXML_VERSION_EXTRA</a><br /> +<a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttr">xmlDebugDumpAttr</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDTD">xmlDebugDumpDTD</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocument">xmlDebugDumpDocument</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocumentHead">xmlDebugDumpDocumentHead</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpEntities">xmlDebugDumpEntities</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNode">xmlDebugDumpNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPUpdateURL">xmlNanoFTPUpdateURL</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +<a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGGetParserErrors">xmlRelaxNGGetParserErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>informations</dt><dd><a href="html/libxml-tree.html#_xmlAttr">_xmlAttr</a><br /> +<a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#endElementNsSAX2Func">endElementNsSAX2Func</a><br /> +<a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpString">xmlDebugDumpString</a><br /> +<a href="html/libxml-parserInternals.html#xmlErrMemory">xmlErrMemory</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPProxy">xmlNanoFTPProxy</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPInit">xmlNanoHTTPInit</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserPrintFileInfo">xmlParserPrintFileInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGGetValidErrors">xmlRelaxNGGetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGSetValidErrors">xmlRelaxNGSetValidErrors</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxParserSetFlag">xmlRelaxParserSetFlag</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2EndElementNs">xmlSAX2EndElementNs</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDir">xmlShellDir</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeProcessNode">xmlXIncludeProcessNode</a><br /> +</dd><dt>informative</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +</dd><dt>infos</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>inherited</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextAttribute">xmlXPathNextAttribute</a><br /> +</dd><dt>inheriting</dt><dd><a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> +</dd><dt>inherits</dt><dd><a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>initial</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaAttribute">_xmlSchemaAttribute</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataGetInitState">xmlAutomataGetInitState</a><br /> +<a href="html/libxml-tree.html#xmlBufferCreateSize">xmlBufferCreateSize</a><br /> +<a href="html/libxml-parser.html#xmlInitNodeInfoSeq">xmlInitNodeInfoSeq</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemStrdupLoc">xmlMemStrdupLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryStrdup">xmlMemoryStrdup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +<a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAdd">xmlXPathNodeSetAdd</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddNs">xmlXPathNodeSetAddNs</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetAddUnique">xmlXPathNodeSetAddUnique</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetCreate">xmlXPathNodeSetCreate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetDel">xmlXPathNodeSetDel</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetRemove">xmlXPathNodeSetRemove</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetCreate">xmlXPtrLocationSetCreate</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetDel">xmlXPtrLocationSetDel</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetRemove">xmlXPtrLocationSetRemove</a><br /> +</dd><dt>initialisation</dt><dd><a href="html/libxml-globals.html#xmlInitGlobals">xmlInitGlobals</a><br /> +</dd><dt>initialization</dt><dd><a href="html/libxml-catalog.html#xmlInitializeCatalog">xmlInitializeCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +<a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +</dd><dt>initialize</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> +<a href="html/libxml-HTMLtree.html#htmlNewDocNoDtD">htmlNewDocNoDtD</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNewParserCtxt">htmlNewParserCtxt</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-valid.html#xmlCreateEnumeration">xmlCreateEnumeration</a><br /> +<a href="html/libxml-threads.html#xmlInitThreads">xmlInitThreads</a><br /> +<a href="html/libxml-globals.html#xmlInitializeGlobalState">xmlInitializeGlobalState</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPNewCtxt">xmlNanoFTPNewCtxt</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +<a href="html/libxml-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNewNodeSet">xmlXPathNewNodeSet</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNewNodeSetList">xmlXPathNewNodeSetList</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNewValueTree">xmlXPathNewValueTree</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodeSet">xmlXPtrNewLocationSetNodeSet</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodes">xmlXPtrNewLocationSetNodes</a><br /> +</dd><dt>initialized</dt><dd><a href="html/libxml-parser.html#XML_SAX2_MAGIC">XML_SAX2_MAGIC</a><br /> +</dd><dt>initializes</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br /> +</dd><dt>initiate</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>initiated</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> +</dd><dt>inline</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>inlined</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +</dd><dt>inputs</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>insensitive</dt><dd><a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +</dd><dt>insert</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>inserted</dt><dd><a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br /> +<a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>insertion</dt><dd><a href="html/libxml-HTMLparser.html#htmlHandleOmittedElem">htmlHandleOmittedElem</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>inspect</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>instace</dt><dd><a href="html/libxml-schematron.html#xmlSchematronValidateDoc">xmlSchematronValidateDoc</a><br /> +</dd><dt>installed</dt><dd><a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br /> +<a href="html/libxml-hash.html#xmlHashSize">xmlHashSize</a><br /> +</dd><dt>instances</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronParse">xmlSchematronParse</a><br /> +</dd><dt>instead</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br /> +<a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br /> +<a href="html/libxml-tree.html#xmlDocSetRootElement">xmlDocSetRootElement</a><br /> +<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseChar">xmlIsBaseChar</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlank">xmlIsBlank</a><br /> +<a href="html/libxml-chvalid.html#xmlIsChar">xmlIsChar</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCombining">xmlIsCombining</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigit">xmlIsDigit</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtender">xmlIsExtender</a><br /> +<a href="html/libxml-chvalid.html#xmlIsIdeographic">xmlIsIdeographic</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveDoc">xmlSaveDoc</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br /> +<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> +</dd><dt>instruction</dt><dd><a href="html/libxml-HTMLtree.html#HTML_PI_NODE">HTML_PI_NODE</a><br /> +<a href="html/libxml-SAX.html#processingInstruction">processingInstruction</a><br /> +<a href="html/libxml-parser.html#processingInstructionSAXFunc">processingInstructionSAXFunc</a><br /> +<a href="html/libxml-tree.html#xmlNewDocPI">xmlNewDocPI</a><br /> +<a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ProcessingInstruction">xmlSAX2ProcessingInstruction</a><br /> +</dd><dt>insufficient</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>intact</dt><dd><a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +</dd><dt>integer</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcasecmp">xmlStrcasecmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrcmp">xmlStrcmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncasecmp">xmlStrncasecmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncmp">xmlStrncmp</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>intended</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br /> +</dd><dt>intensively</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>interact</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +</dd><dt>interface</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_PATTERN_ENABLED">LIBXML_PATTERN_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_READER_ENABLED">LIBXML_READER_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SAX1_ENABLED">LIBXML_SAX1_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_WRITER_ENABLED">LIBXML_WRITER_ENABLED</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseDocument">docbParseDocument</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseDocument">htmlParseDocument</a><br /> +<a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentNode">xmlTextReaderCurrentNode</a><br /> +</dd><dt>interfaces</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_AUTOMATA_ENABLED">LIBXML_AUTOMATA_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_EXPR_ENABLED">LIBXML_EXPR_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_PUSH_ENABLED">LIBXML_PUSH_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_REGEXP_ENABLED">LIBXML_REGEXP_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMAS_ENABLED">LIBXML_SCHEMAS_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_SCHEMATRON_ENABLED">LIBXML_SCHEMATRON_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_UNICODE_ENABLED">LIBXML_UNICODE_ENABLED</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNSDef">xmlNamespaceParseNSDef</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseQName">xmlNamespaceParseQName</a><br /> +</dd><dt>intern</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +</dd><dt>internally</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> +<a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br /> +<a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaValidateFile">xmlSchemaValidateFile</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>interned</dt><dd><a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstString">xmlTextReaderConstString</a><br /> +</dd><dt>interning</dt><dd><a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br /> +<a href="html/libxml-tree.html#xmlNewPI">xmlNewPI</a><br /> +</dd><dt>interoperability</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>interprestation</dt><dd><a href="html/libxml-xpath.html#xmlXPathFunction">xmlXPathFunction</a><br /> +</dd><dt>interpreter</dt><dd><a href="html/libxml-xpath.html#xmlXPathAxisFunc">xmlXPathAxisFunc</a><br /> +</dd><dt>intersection</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +</dd><dt>invalid</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>invited</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>invoking</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br /> +</dd><dt>isinf</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +</dd><dt>isn</dt><dd><a href="html/libxml-encoding.html#xmlRegisterCharEncodingHandler">xmlRegisterCharEncodingHandler</a><br /> +</dd><dt>isnan</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>issue</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>issued</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +</dd><dt>item</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br /> +</dd><dt>items</dt><dd><a href="html/libxml-xpathInternals.html#valuePush">valuePush</a><br /> +<a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br /> +<a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br /> +<a href="html/libxml-hash.html#xmlHashScan">xmlHashScan</a><br /> +<a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull">xmlHashScanFull</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +</dd><dt>itself</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk18.html b/libxml2-2.7.7/doc/APIchunk18.html new file mode 100644 index 0000000..41fad5e --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk18.html
@@ -0,0 +1,445 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index j-l for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index j-l for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter j:</h2><dl><dt>just</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br /> +<a href="html/libxml-parserInternals.html#inputPop">inputPop</a><br /> +<a href="html/libxml-parserInternals.html#namePop">namePop</a><br /> +<a href="html/libxml-parserInternals.html#nodePop">nodePop</a><br /> +<a href="html/libxml-xpathInternals.html#valuePop">valuePop</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br /> +<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-valid.html#xmlCreateEnumeration">xmlCreateEnumeration</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPInit">xmlNanoHTTPInit</a><br /> +<a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xpath.html#xmlXPathNewContext">xmlXPathNewContext</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNewParserContext">xmlXPathNewParserContext</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewContext">xmlXPtrNewContext</a><br /> +</dd></dl><h2>Letter k:</h2><dl><dt>keep</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-uri.html#xmlParseURIRaw">xmlParseURIRaw</a><br /> +<a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +<a href="html/libxml-parser.html#xmlSubstituteEntitiesDefault">xmlSubstituteEntitiesDefault</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreserve">xmlTextReaderPreserve</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNextNamespace">xmlXPathNextNamespace</a><br /> +</dd><dt>keeps</dt><dd><a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +</dd><dt>kept</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-HTMLparser.html#htmlAutoCloseTag">htmlAutoCloseTag</a><br /> +<a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br /> +<a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +</dd><dt>keyword</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +</dd><dt>kill</dt><dd><a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +</dd><dt>kind</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttributeGroup">_xmlSchemaAttributeGroup</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaFacet">_xmlSchemaFacet</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaNotation">_xmlSchemaNotation</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> +</dd><dt>know</dt><dd><a href="html/libxml-xmlstring.html#BAD_CAST">BAD_CAST</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +</dd><dt>knowledge</dt><dd><a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br /> +</dd><dt>known</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xmlIO.html#xmlAllocParserInputBuffer">xmlAllocParserInputBuffer</a><br /> +<a href="html/libxml-parser.html#xmlCreateIOParserCtxt">xmlCreateIOParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br /> +<a href="html/libxml-parser.html#xmlNewIOInputStream">xmlNewIOInputStream</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateIO">xmlOutputBufferCreateIO</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFd">xmlParserInputBufferCreateFd</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFile">xmlParserInputBufferCreateFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateFilename">xmlParserInputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateIO">xmlParserInputBufferCreateIO</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateMem">xmlParserInputBufferCreateMem</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +</dd></dl><h2>Letter l:</h2><dl><dt>labeled</dt><dd><a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>lack</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +</dd><dt>lang</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +</dd><dt>language</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetLang">xmlNodeSetLang</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +</dd><dt>languages</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpSubsume">xmlExpSubsume</a><br /> +</dd><dt>large</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +</dd><dt>largest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br /> +</dd><dt>later</dt><dd><a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +</dd><dt>latest</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPReturnCode">xmlNanoHTTPReturnCode</a><br /> +</dd><dt>layer</dt><dd><a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br /> +<a href="html/libxml-xmlmemory.html#xmlInitMemory">xmlInitMemory</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPCleanup">xmlNanoFTPCleanup</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPInit">xmlNanoFTPInit</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPCleanup">xmlNanoHTTPCleanup</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPInit">xmlNanoHTTPInit</a><br /> +<a href="html/libxml-tree.html#xmlRootNode">xmlRootNode</a><br /> +<a href="html/libxml-tree.html#xmlSaveFileTo">xmlSaveFileTo</a><br /> +<a href="html/libxml-tree.html#xmlSaveFormatFileTo">xmlSaveFormatFileTo</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXUnplug">xmlSchemaSAXUnplug</a><br /> +</dd><dt>leading</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>leak</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>least</dt><dd><a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>left</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewOr">xmlExpNewOr</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewSeq">xmlExpNewSeq</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>legacy</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>len</dt><dd><a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br /> +<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br /> +<a href="html/libxml-xmlstring.html#xmlCharStrndup">xmlCharStrndup</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpStringDerive">xmlExpStringDerive</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-tree.html#xmlNewDocTextLen">xmlNewDocTextLen</a><br /> +<a href="html/libxml-tree.html#xmlNewTextLen">xmlNewTextLen</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncat">xmlStrncat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrndup">xmlStrndup</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strndup">xmlUTF8Strndup</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br /> +</dd><dt>lenght</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewAtom">xmlExpNewAtom</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGValidatePushCData">xmlRelaxNGValidatePushCData</a><br /> +<a href="html/libxml-tree.html#xmlSplitQName3">xmlSplitQName3</a><br /> +<a href="html/libxml-valid.html#xmlValidatePushCData">xmlValidatePushCData</a><br /> +</dd><dt>length-1</dt><dd><a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br /> +</dd><dt>less</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>less-than</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>level</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br /> +<a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogSetDebug">xmlCatalogSetDebug</a><br /> +<a href="html/libxml-xmlmemory.html#xmlCleanupMemory">xmlCleanupMemory</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttr">xmlDebugDumpAttr</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNode">xmlDebugDumpNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br /> +<a href="html/libxml-tree.html#xmlNodeDump">xmlNodeDump</a><br /> +<a href="html/libxml-tree.html#xmlNodeDumpOutput">xmlNodeDumpOutput</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPop">xmlStreamPop</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br /> +</dd><dt>lexical</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br /> +<a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br /> +<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br /> +<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br /> +<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br /> +</dd><dt>lib</dt><dd><a href="html/libxml-xmlversion.html#xmlCheckVersion">xmlCheckVersion</a><br /> +</dd><dt>libc</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +</dd><dt>libraries</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGInitTypes">xmlRelaxNGInitTypes</a><br /> +</dd><dt>library</dt><dd><a href="html/libxml-xmlerror.html#_xmlError">_xmlError</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-xmlmemory.html#xmlCleanupMemory">xmlCleanupMemory</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +<a href="html/libxml-threads.html#xmlInitThreads">xmlInitThreads</a><br /> +<a href="html/libxml-globals.html#xmlInitializeGlobalState">xmlInitializeGlobalState</a><br /> +<a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGCleanupTypes">xmlRelaxNGCleanupTypes</a><br /> +<a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCleanupTypes">xmlSchemaCleanupTypes</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeValue">xmlSchemaFreeValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaInitTypes">xmlSchemaInitTypes</a><br /> +<a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> +</dd><dt>libs</dt><dd><a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>libxml</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_TEST_VERSION">LIBXML_TEST_VERSION</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPrintXPathError">xmlShellPrintXPathError</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>libxml1</dt><dd><a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br /> +<a href="html/libxml-tree.html#xmlRootNode">xmlRootNode</a><br /> +</dd><dt>libxml2</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br /> +<a href="html/libxml-threads.html#xmlInitThreads">xmlInitThreads</a><br /> +<a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br /> +<a href="html/libxml-threads.html#xmlMutexLock">xmlMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlMutexUnlock">xmlMutexUnlock</a><br /> +<a href="html/libxml-threads.html#xmlNewMutex">xmlNewMutex</a><br /> +<a href="html/libxml-threads.html#xmlRMutexLock">xmlRMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlRMutexUnlock">xmlRMutexUnlock</a><br /> +<a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> +</dd><dt>lifetime</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +</dd><dt>like</dt><dd><a href="html/libxml-parserInternals.html#IS_CHAR_CH">IS_CHAR_CH</a><br /> +<a href="html/libxml-parserInternals.html#IS_DIGIT_CH">IS_DIGIT_CH</a><br /> +<a href="html/libxml-parserInternals.html#IS_EXTENDER_CH">IS_EXTENDER_CH</a><br /> +<a href="html/libxml-parserInternals.html#IS_LETTER_CH">IS_LETTER_CH</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_ATTR_FORMAT">LIBXML_ATTR_FORMAT</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_DOTTED_VERSION">LIBXML_DOTTED_VERSION</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +<a href="html/libxml-catalog.html#xmlParseCatalogFile">xmlParseCatalogFile</a><br /> +<a href="html/libxml-debugXML.html#xmlShellList">xmlShellList</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>likely</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +</dd><dt>limit</dt><dd><a href="html/libxml-encoding.html#xmlCharEncFirstLine">xmlCharEncFirstLine</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +</dd><dt>limitation</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_TEXT_LENGTH">XML_MAX_TEXT_LENGTH</a><br /> +</dd><dt>limited</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +</dd><dt>linear</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +</dd><dt>linked</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttributeLink">_xmlSchemaAttributeLink</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaFacetLink">_xmlSchemaFacetLink</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaTypeLink">_xmlSchemaTypeLink</a><br /> +</dd><dt>linking</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +</dd><dt>links</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>listing</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPList">xmlNanoFTPList</a><br /> +<a href="html/libxml-debugXML.html#xmlShellList">xmlShellList</a><br /> +</dd><dt>lists</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +</dd><dt>literal</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePubidLiteral">xmlParsePubidLiteral</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>load</dt><dd><a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +<a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +<a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +<a href="html/libxml-debugXML.html#xmlShellLoad">xmlShellLoad</a><br /> +</dd><dt>loaded</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>loader</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +<a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +</dd><dt>loaders</dt><dd><a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> +</dd><dt>loading</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br /> +<a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br /> +<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2ResolveEntity">xmlSAX2ResolveEntity</a><br /> +<a href="html/libxml-debugXML.html#xmlShellLoad">xmlShellLoad</a><br /> +</dd><dt>loads</dt><dd><a href="html/libxml-debugXML.html#xmlShellLoad">xmlShellLoad</a><br /> +</dd><dt>loadsubset</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br /> +</dd><dt>local-name</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathLocalNameFunction">xmlXPathLocalNameFunction</a><br /> +</dd><dt>localname</dt><dd><a href="html/libxml-parser.html#startElementNsSAX2Func">startElementNsSAX2Func</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br /> +</dd><dt>location</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br /> +<a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPFetch">xmlNanoHTTPFetch</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpen">xmlNanoHTTPOpen</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPOpenRedir">xmlNanoHTTPOpenRedir</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGNewParserCtxt">xmlRelaxNGNewParserCtxt</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewParserCtxt">xmlSchemaNewParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewParserCtxt">xmlSchematronNewParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Strloc">xmlUTF8Strloc</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrLocationSetAdd">xmlXPtrLocationSetAdd</a><br /> +</dd><dt>locations</dt><dd><a href="html/libxml-xpointer.html#_xmlLocationSet">_xmlLocationSet</a><br /> +</dd><dt>locator</dt><dd><a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br /> +<a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +<a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderErrorFunc">xmlTextReaderErrorFunc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderLocatorBaseURI">xmlTextReaderLocatorBaseURI</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderLocatorLineNumber">xmlTextReaderLocatorLineNumber</a><br /> +</dd><dt>locators</dt><dd><a href="html/libxml-xlink.html#xlinkExtendedLinkFunk">xlinkExtendedLinkFunk</a><br /> +<a href="html/libxml-xlink.html#xlinkExtendedLinkSetFunk">xlinkExtendedLinkSetFunk</a><br /> +</dd><dt>lock</dt><dd><a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br /> +<a href="html/libxml-threads.html#xmlMutexLock">xmlMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +<a href="html/libxml-threads.html#xmlRMutexLock">xmlRMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlUnlockLibrary">xmlUnlockLibrary</a><br /> +</dd><dt>logging</dt><dd><a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemRealloc">xmlMemRealloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemStrdupLoc">xmlMemStrdupLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryStrdup">xmlMemoryStrdup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlReallocLoc">xmlReallocLoc</a><br /> +</dd><dt>long</dt><dd><a href="html/libxml-parserInternals.html#IS_BASECHAR">IS_BASECHAR</a><br /> +<a href="html/libxml-parserInternals.html#IS_COMBINING">IS_COMBINING</a><br /> +<a href="html/libxml-parserInternals.html#IS_DIGIT">IS_DIGIT</a><br /> +<a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> +<a href="html/libxml-parser.html#xmlParserFindNodeInfoIndex">xmlParserFindNodeInfoIndex</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br /> +</dd><dt>longer</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTranslateFunction">xmlXPathTranslateFunction</a><br /> +</dd><dt>look-ahead</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>lookahead</dt><dd><a href="html/libxml-parser.html#xmlParserInputGrow">xmlParserInputGrow</a><br /> +<a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br /> +</dd><dt>looked</dt><dd><a href="html/libxml-xpath.html#_xmlNodeSet">_xmlNodeSet</a><br /> +<a href="html/libxml-pattern.html#xmlPatternFromRoot">xmlPatternFromRoot</a><br /> +</dd><dt>looks</dt><dd><a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br /> +<a href="html/libxml-tree.html#xmlGetNsProp">xmlGetNsProp</a><br /> +<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +<a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> +<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br /> +</dd><dt>lookups</dt><dd><a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br /> +<a href="html/libxml-catalog.html#xmlParseCatalogFile">xmlParseCatalogFile</a><br /> +</dd><dt>loop</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemory">xmlParseBalancedChunkMemory</a><br /> +<a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +</dd><dt>loops</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>lossless</dt><dd><a href="html/libxml-xmlIO.html#xmlOutputBufferWrite">xmlOutputBufferWrite</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteEscape">xmlOutputBufferWriteEscape</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferWriteString">xmlOutputBufferWriteString</a><br /> +</dd><dt>lower</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +</dd><dt>lowercase</dt><dd><a href="html/libxml-HTMLparser.html#htmlTagLookup">htmlTagLookup</a><br /> +<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk19.html b/libxml2-2.7.7/doc/APIchunk19.html new file mode 100644 index 0000000..51645b1 --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk19.html
@@ -0,0 +1,367 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index m-m for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index m-m for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter m:</h2><dl><dt>machine</dt><dd><a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br /> +</dd><dt>macro</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDocType">xmlTextWriterWriteDocType</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteProcessingInstruction">xmlTextWriterWriteProcessingInstruction</a><br /> +</dd><dt>made</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_ISO8859X_ENABLED">LIBXML_ISO8859X_ENABLED</a><br /> +<a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-parserInternals.html#xmlSetEntityReferenceFunc">xmlSetEntityReferenceFunc</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodes">xmlXPtrNewLocationSetNodes</a><br /> +</dd><dt>main</dt><dd><a href="html/libxml-threads.html#xmlIsMainThread">xmlIsMainThread</a><br /> +</dd><dt>maintained</dt><dd><a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br /> +<a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +</dd><dt>major</dt><dd><a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +</dd><dt>make</dt><dd><a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br /> +<a href="html/libxml-tree.html#xmlNewNode">xmlNewNode</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveClose">xmlSaveClose</a><br /> +<a href="html/libxml-xmlsave.html#xmlSaveFlush">xmlSaveFlush</a><br /> +</dd><dt>makes</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br /> +<a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderExpand">xmlTextReaderExpand</a><br /> +</dd><dt>malloc</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocAtomicLoc">xmlMallocAtomicLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocFunc">xmlMallocFunc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMallocLoc">xmlMallocLoc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemGet">xmlMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemMalloc">xmlMemMalloc</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br /> +</dd><dt>mallocAtomicFunc</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemGet">xmlGcMemGet</a><br /> +<a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br /> +</dd><dt>manage</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteChar">xmlBufferWriteChar</a><br /> +<a href="html/libxml-tree.html#xmlBufferWriteQuotedString">xmlBufferWriteQuotedString</a><br /> +</dd><dt>manages</dt><dd><a href="html/libxml-tree.html#xmlBufferWriteCHAR">xmlBufferWriteCHAR</a><br /> +</dd><dt>mandate</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br /> +</dd><dt>manipulated</dt><dd><a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +</dd><dt>manipulating</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>manipulation</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br /> +</dd><dt>many</dt><dd><a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>map</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +</dd><dt>maps</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderLookupNamespace">xmlTextReaderLookupNamespace</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteDocType">xmlTextWriterWriteDocType</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteProcessingInstruction">xmlTextWriterWriteProcessingInstruction</a><br /> +</dd><dt>mark</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrdup">xmlStrdup</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderQuoteChar">xmlTextReaderQuoteChar</a><br /> +</dd><dt>marked</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br /> +<a href="html/libxml-parser.html#_xmlParserInput">_xmlParserInput</a><br /> +</dd><dt>marker</dt><dd><a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +</dd><dt>marking</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +</dd><dt>marks</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br /> +</dd><dt>markup</dt><dd><a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteFormatDTD">xmlTextWriterWriteFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a><br /> +</dd><dt>markupdecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>masked</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>matched</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br /> +</dd><dt>matches</dt><dd><a href="html/libxml-xpathInternals.html#CHECK_ARITY">CHECK_ARITY</a><br /> +<a href="html/libxml-xmlIO.html#xmlFileMatch">xmlFileMatch</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPMatch">xmlIOFTPMatch</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPMatch">xmlIOHTTPMatch</a><br /> +<a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br /> +<a href="html/libxml-parser.html#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a><br /> +<a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMatch">xmlPatternMatch</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>matching</dt><dd><a href="html/libxml-xmlIO.html#xmlFileMatch">xmlFileMatch</a><br /> +<a href="html/libxml-xmlIO.html#xmlFileOpen">xmlFileOpen</a><br /> +<a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPMatch">xmlIOFTPMatch</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOFTPOpen">xmlIOFTPOpen</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPMatch">xmlIOHTTPMatch</a><br /> +<a href="html/libxml-xmlIO.html#xmlIOHTTPOpen">xmlIOHTTPOpen</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegNewExecCtxt">xmlRegNewExecCtxt</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br /> +</dd><dt>max</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathParserContext">_xmlXPathParserContext</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +<a href="html/libxml-tree.html#xmlSetDocCompressMode">xmlSetDocCompressMode</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncasecmp">xmlStrncasecmp</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncmp">xmlStrncmp</a><br /> +</dd><dt>maxLength</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +</dd><dt>maximal</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> +</dd><dt>maximum</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpMaxToken">xmlExpMaxToken</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpNewCtxt">xmlExpNewCtxt</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>maybe</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +</dd><dt>mean</dt><dd><a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> +</dd><dt>means</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpNewRange">xmlExpNewRange</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br /> +<a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>mechanism</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterFuncLookup">xmlXPathRegisterFuncLookup</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRegisterVariableLookup">xmlXPathRegisterVariableLookup</a><br /> +</dd><dt>mechanisms</dt><dd><a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>meet</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +</dd><dt>member</dt><dd><a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttribute">xmlTextWriterWriteVFormatAttribute</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttributeNS">xmlTextWriterWriteVFormatAttributeNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatCDATA">xmlTextWriterWriteVFormatCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatComment">xmlTextWriterWriteVFormatComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTD">xmlTextWriterWriteVFormatDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDAttlist">xmlTextWriterWriteVFormatDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDElement">xmlTextWriterWriteVFormatDTDElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatDTDInternalEntity">xmlTextWriterWriteVFormatDTDInternalEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatElement">xmlTextWriterWriteVFormatElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatElementNS">xmlTextWriterWriteVFormatElementNS</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatPI">xmlTextWriterWriteVFormatPI</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatRaw">xmlTextWriterWriteVFormatRaw</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatString">xmlTextWriterWriteVFormatString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>member-types</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +</dd><dt>memo</dt><dd><a href="html/libxml-SAX.html#getSystemId">getSystemId</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetSystemId">xmlSAX2GetSystemId</a><br /> +</dd><dt>memorylist</dt><dd><a href="html/libxml-xmlmemory.html#xmlMemDisplay">xmlMemDisplay</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +<a href="html/libxml-xmlmemory.html#xmlMemoryDump">xmlMemoryDump</a><br /> +</dd><dt>merged</dt><dd><a href="html/libxml-tree.html#xmlTextMerge">xmlTextMerge</a><br /> +</dd><dt>merging</dt><dd><a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br /> +<a href="html/libxml-tree.html#xmlAddChildList">xmlAddChildList</a><br /> +<a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br /> +<a href="html/libxml-tree.html#xmlAddSibling">xmlAddSibling</a><br /> +</dd><dt>messages</dt><dd><a href="html/libxml-parser.html#errorSAXFunc">errorSAXFunc</a><br /> +<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-parser.html#warningSAXFunc">warningSAXFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserError">xmlParserError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityError">xmlParserValidityError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +</dd><dt>method</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a><br /> +<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a><br /> +<a href="html/libxml-tree.html#_xmlBuffer">_xmlBuffer</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethod">xmlNanoHTTPMethod</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPMethodRedir">xmlNanoHTTPMethodRedir</a><br /> +<a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameFunc">xmlOutputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-globals.html#xmlParserInputBufferCreateFilenameFunc">xmlParserInputBufferCreateFilenameFunc</a><br /> +<a href="html/libxml-xmlIO.html#xmlRegisterHTTPPostCallbacks">xmlRegisterHTTPPostCallbacks</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderClose">xmlTextReaderClose</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +</dd><dt>might</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +</dd><dt>migrate</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br /> +</dd><dt>min</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>minLength</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br /> +</dd><dt>minimal</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpParse">xmlExpParse</a><br /> +</dd><dt>minimum</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +<a href="html/libxml-tree.html#xmlBufferGrow">xmlBufferGrow</a><br /> +<a href="html/libxml-tree.html#xmlBufferResize">xmlBufferResize</a><br /> +<a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br /> +<a href="html/libxml-pattern.html#xmlPatternMinDepth">xmlPatternMinDepth</a><br /> +</dd><dt>minus</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>minute</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>misc</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +</dd><dt>misleading</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>missing</dt><dd><a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +</dd><dt>mixed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +</dd><dt>mixed-content</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +</dd><dt>mmap</dt><dd><a href="html/libxml-xmlIO.html#xmlParserInputBufferCreateStatic">xmlParserInputBufferCreateStatic</a><br /> +</dd><dt>mod</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +</dd><dt>mode</dt><dd><a href="html/libxml-tree.html#_xmlBuffer">_xmlBuffer</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-tree.html#xmlGetCompressMode">xmlGetCompressMode</a><br /> +<a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br /> +<a href="html/libxml-nanoftp.html#xmlNanoFTPGetConnection">xmlNanoFTPGetConnection</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferPush">xmlParserInputBufferPush</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFile">xmlSAXParseFile</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemory">xmlSAXParseMemory</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +<a href="html/libxml-tree.html#xmlSetCompressMode">xmlSetCompressMode</a><br /> +</dd><dt>model</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br /> +<a href="html/libxml-valid.html#xmlValidBuildContentModel">xmlValidBuildContentModel</a><br /> +</dd><dt>modified</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContent">xmlNodeAddContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeAddContentLen">xmlNodeAddContentLen</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContent">xmlNodeSetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeSetContentLen">xmlNodeSetContentLen</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaNewDocParserCtxt">xmlSchemaNewDocParserCtxt</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronNewDocParserCtxt">xmlSchematronNewDocParserCtxt</a><br /> +</dd><dt>modifies</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br /> +</dd><dt>modify</dt><dd><a href="html/libxml-debugXML.html#xmlShell">xmlShell</a><br /> +</dd><dt>module</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a><br /> +<a href="html/libxml-xmlversion.html#LIBXML_MODULES_ENABLED">LIBXML_MODULES_ENABLED</a><br /> +<a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleClose">xmlModuleClose</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleFree">xmlModuleFree</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleOpen">xmlModuleOpen</a><br /> +<a href="html/libxml-xmlmodule.html#xmlModuleSymbol">xmlModuleSymbol</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br /> +<a href="html/libxml-xmlerror.html#xmlStructuredErrorFunc">xmlStructuredErrorFunc</a><br /> +</dd><dt>modules</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_MODULE_EXTENSION">LIBXML_MODULE_EXTENSION</a><br /> +</dd><dt>moment</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>month</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br /> +</dd><dt>more</dt><dd><a href="html/libxml-parserInternals.html#XML_MAX_NAMELEN">XML_MAX_NAMELEN</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetLanguage">xmlExpGetLanguage</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNext">xmlTextReaderNext</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNextSibling">xmlTextReaderNextSibling</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderRead">xmlTextReaderRead</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadAttributeValue">xmlTextReaderReadAttributeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>moreover</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br /> +<a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans2">xmlAutomataNewOnceTrans2</a><br /> +</dd><dt>most</dt><dd><a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +</dd><dt>move</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +</dd><dt>moved</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderMoveToElement">xmlTextReaderMoveToElement</a><br /> +</dd><dt>much</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>multi-threaded</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +</dd><dt>multi-threading</dt><dd><a href="html/libxml-globals.html#xmlCleanupGlobals">xmlCleanupGlobals</a><br /> +<a href="html/libxml-globals.html#xmlInitGlobals">xmlInitGlobals</a><br /> +</dd><dt>multiple</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringCurrentChar">xmlStringCurrentChar</a><br /> +</dd><dt>multiply</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +</dd><dt>multithreaded</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +<a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +<a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br /> +</dd><dt>mutex</dt><dd><a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br /> +<a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br /> +<a href="html/libxml-threads.html#xmlFreeRMutex">xmlFreeRMutex</a><br /> +<a href="html/libxml-threads.html#xmlMutexLock">xmlMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlMutexUnlock">xmlMutexUnlock</a><br /> +<a href="html/libxml-threads.html#xmlNewMutex">xmlNewMutex</a><br /> +<a href="html/libxml-threads.html#xmlNewRMutex">xmlNewRMutex</a><br /> +<a href="html/libxml-threads.html#xmlRMutexLock">xmlRMutexLock</a><br /> +<a href="html/libxml-threads.html#xmlRMutexUnlock">xmlRMutexUnlock</a><br /> +</dd><dt>myDoc</dt><dd><a href="html/libxml-DOCBparser.html#docbFreeParserCtxt">docbFreeParserCtxt</a><br /> +<a href="html/libxml-HTMLparser.html#htmlFreeParserCtxt">htmlFreeParserCtxt</a><br /> +<a href="html/libxml-parser.html#xmlFreeParserCtxt">xmlFreeParserCtxt</a><br /> +</dd><dt>myproxy</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd><dt>myproxy:3128</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br /> +<a href="html/libxml-nanohttp.html#xmlNanoHTTPScanProxy">xmlNanoHTTPScanProxy</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk2.html b/libxml2-2.7.7/doc/APIchunk2.html new file mode 100644 index 0000000..966456e --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk2.html
@@ -0,0 +1,412 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index D-E for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index D-E for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter D:</h2><dl><dt>DEBUG_MEMORY</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +</dd><dt>DEBUG_MEMORY_FREED</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +</dd><dt>DEBUG_MEMORY_LOCATION</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br /> +</dd><dt>DELE</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br /> +</dd><dt>DELEGATE</dt><dd><a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +</dd><dt>DEMO</dt><dd><a href="html/libxml-SAX.html#getPublicId">getPublicId</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2GetPublicId">xmlSAX2GetPublicId</a><br /> +</dd><dt>DEPRECATED</dt><dd><a href="html/libxml-SAX.html#checkNamespace">checkNamespace</a><br /> +<a href="html/libxml-SAX.html#getNamespace">getNamespace</a><br /> +<a href="html/libxml-SAX.html#globalNamespace">globalNamespace</a><br /> +<a href="html/libxml-SAX.html#namespaceDecl">namespaceDecl</a><br /> +<a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br /> +<a href="html/libxml-SAX.html#setNamespace">setNamespace</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogGetPublic">xmlCatalogGetPublic</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogGetSystem">xmlCatalogGetSystem</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBaseChar">xmlIsBaseChar</a><br /> +<a href="html/libxml-chvalid.html#xmlIsBlank">xmlIsBlank</a><br /> +<a href="html/libxml-chvalid.html#xmlIsChar">xmlIsChar</a><br /> +<a href="html/libxml-chvalid.html#xmlIsCombining">xmlIsCombining</a><br /> +<a href="html/libxml-chvalid.html#xmlIsDigit">xmlIsDigit</a><br /> +<a href="html/libxml-chvalid.html#xmlIsExtender">xmlIsExtender</a><br /> +<a href="html/libxml-chvalid.html#xmlIsIdeographic">xmlIsIdeographic</a><br /> +<a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br /> +<a href="html/libxml-tree.html#xmlNewGlobalNs">xmlNewGlobalNs</a><br /> +</dd><dt>DOCTYPE</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br /> +</dd><dt>DOM-wrapper</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapFreeCtxt">xmlDOMWrapFreeCtxt</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapNewCtxt">xmlDOMWrapNewCtxt</a><br /> +</dd><dt>DTDs</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +</dd><dt>Data</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCDSect">xmlParseCDSect</a><br /> +</dd><dt>Datatype</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br /> +</dd><dt>Datatypes</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br /> +</dd><dt>Deallocate</dt><dd><a href="html/libxml-valid.html#xmlFreeAttributeTable">xmlFreeAttributeTable</a><br /> +<a href="html/libxml-valid.html#xmlFreeElementTable">xmlFreeElementTable</a><br /> +<a href="html/libxml-entities.html#xmlFreeEntitiesTable">xmlFreeEntitiesTable</a><br /> +<a href="html/libxml-valid.html#xmlFreeIDTable">xmlFreeIDTable</a><br /> +<a href="html/libxml-valid.html#xmlFreeNotationTable">xmlFreeNotationTable</a><br /> +<a href="html/libxml-valid.html#xmlFreeRefTable">xmlFreeRefTable</a><br /> +<a href="html/libxml-xmlreader.html#xmlFreeTextReader">xmlFreeTextReader</a><br /> +<a href="html/libxml-xmlwriter.html#xmlFreeTextWriter">xmlFreeTextWriter</a><br /> +<a href="html/libxml-relaxng.html#xmlRelaxNGFree">xmlRelaxNGFree</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaFree">xmlSchemaFree</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeFacet">xmlSchemaFreeFacet</a><br /> +<a href="html/libxml-schemasInternals.html#xmlSchemaFreeType">xmlSchemaFreeType</a><br /> +<a href="html/libxml-schematron.html#xmlSchematronFree">xmlSchematronFree</a><br /> +</dd><dt>Deallocates</dt><dd><a href="html/libxml-schemasInternals.html#xmlSchemaFreeWildcard">xmlSchemaFreeWildcard</a><br /> +</dd><dt>Debugging</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DEBUG_ENABLED">LIBXML_DEBUG_ENABLED</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbCons">xmlExpCtxtNbCons</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpCtxtNbNodes">xmlExpCtxtNbNodes</a><br /> +</dd><dt>Declaration</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +</dd><dt>Declared</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-valid.html#xmlValidateNotationUse">xmlValidateNotationUse</a><br /> +</dd><dt>Default</dt><dd><a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +</dd><dt>DefaultDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeListDecl">xmlParseAttributeListDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br /> +</dd><dt>Deletes</dt><dd><a href="html/libxml-list.html#xmlListDelete">xmlListDelete</a><br /> +</dd><dt>Depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +</dd><dt>Dereference</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpFree">xmlExpFree</a><br /> +</dd><dt>DeregisterNodeFunc</dt><dd><a href="html/libxml-globals.html#xmlDeregisterNodeDefault">xmlDeregisterNodeDefault</a><br /> +</dd><dt>Deseret</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsDeseret">xmlUCSIsDeseret</a><br /> +</dd><dt>Determine</dt><dd><a href="html/libxml-HTMLtree.html#htmlIsBooleanAttr">htmlIsBooleanAttr</a><br /> +<a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br /> +<a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstEncoding">xmlTextReaderConstEncoding</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstXmlVersion">xmlTextReaderConstXmlVersion</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderIsNamespaceDecl">xmlTextReaderIsNamespaceDecl</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderStandalone">xmlTextReaderStandalone</a><br /> +</dd><dt>Devanagari</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsDevanagari">xmlUCSIsDevanagari</a><br /> +</dd><dt>Different</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br /> +</dd><dt>Digit</dt><dd><a href="html/libxml-parserInternals.html#IS_DIGIT">IS_DIGIT</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseName">xmlParseName</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseNCName">xmlXPathParseNCName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseName">xmlXPathParseName</a><br /> +</dd><dt>Digits</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>Digits?</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +</dd><dt>Dingbats</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsDingbats">xmlUCSIsDingbats</a><br /> +</dd><dt>Display</dt><dd><a href="html/libxml-parser.html#errorSAXFunc">errorSAXFunc</a><br /> +<a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br /> +<a href="html/libxml-parser.html#warningSAXFunc">warningSAXFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserError">xmlParserError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityError">xmlParserValidityError</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserWarning">xmlParserWarning</a><br /> +</dd><dt>Displays</dt><dd><a href="html/libxml-xmlerror.html#xmlParserPrintFileContext">xmlParserPrintFileContext</a><br /> +<a href="html/libxml-xmlerror.html#xmlParserPrintFileInfo">xmlParserPrintFileInfo</a><br /> +</dd><dt>DocBook</dt><dd><a href="html/libxml-DOCBparser.html#docbCreatePushParserCtxt">docbCreatePushParserCtxt</a><br /> +<a href="html/libxml-SAX.html#initdocbDefaultSAXHandler">initdocbDefaultSAXHandler</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2InitDocbDefaultSAXHandler">xmlSAX2InitDocbDefaultSAXHandler</a><br /> +</dd><dt>Docbook</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_DOCB_ENABLED">LIBXML_DOCB_ENABLED</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-DOCBparser.html#docbParseFile">docbParseFile</a><br /> +</dd><dt>Document</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlDocDumpMemoryEnc">xmlDocDumpMemoryEnc</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-xinclude.html#xmlXIncludeNewContext">xmlXIncludeNewContext</a><br /> +</dd><dt>Does</dt><dd><a href="html/libxml-SAX.html#hasExternalSubset">hasExternalSubset</a><br /> +<a href="html/libxml-parser.html#hasExternalSubsetSAXFunc">hasExternalSubsetSAXFunc</a><br /> +<a href="html/libxml-SAX.html#hasInternalSubset">hasInternalSubset</a><br /> +<a href="html/libxml-parser.html#hasInternalSubsetSAXFunc">hasInternalSubsetSAXFunc</a><br /> +<a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2HasExternalSubset">xmlSAX2HasExternalSubset</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2HasInternalSubset">xmlSAX2HasInternalSubset</a><br /> +<a href="html/libxml-debugXML.html#xmlShellList">xmlShellList</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>Douglas</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>Draft</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br /> +</dd><dt>DtD</dt><dd><a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdNotationDesc">xmlGetDtdNotationDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdQAttrDesc">xmlGetDtdQAttrDesc</a><br /> +<a href="html/libxml-valid.html#xmlGetDtdQElementDesc">xmlGetDtdQElementDesc</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br /> +</dd><dt>DtDs</dt><dd><a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br /> +</dd><dt>Dtd</dt><dd><a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>Dumps</dt><dd><a href="html/libxml-tree.html#xmlBufferDump">xmlBufferDump</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttr">xmlDebugDumpAttr</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpAttrList">xmlDebugDumpAttrList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDTD">xmlDebugDumpDTD</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocument">xmlDebugDumpDocument</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpDocumentHead">xmlDebugDumpDocumentHead</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpEntities">xmlDebugDumpEntities</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNode">xmlDebugDumpNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpNodeList">xmlDebugDumpNodeList</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpOneNode">xmlDebugDumpOneNode</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpString">xmlDebugDumpString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br /> +</dd><dt>Duplicate</dt><dd><a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry2">xmlHashAddEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry3">xmlHashAddEntry3</a><br /> +<a href="html/libxml-list.html#xmlListDup">xmlListDup</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +</dd></dl><h2>Letter E:</h2><dl><dt>ELEMENT</dt><dd><a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br /> +</dd><dt>EMPTY</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +</dd><dt>ENTITIES</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>ENTITY</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>ENTITY_REF</dt><dd><a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +</dd><dt>ENTITY_REFs</dt><dd><a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetRawString">xmlNodeListGetRawString</a><br /> +<a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br /> +<a href="html/libxml-tree.html#xmlStringGetNodeList">xmlStringGetNodeList</a><br /> +<a href="html/libxml-tree.html#xmlStringLenGetNodeList">xmlStringLenGetNodeList</a><br /> +</dd><dt>ETag</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEndTag">xmlParseEndTag</a><br /> +</dd><dt>EXSLT</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinct">xmlXPathDistinct</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDistinctSorted">xmlXPathDistinctSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathHasSameNodes">xmlXPathHasSameNodes</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeading">xmlXPathLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLeadingSorted">xmlXPathLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeading">xmlXPathNodeLeading</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeLeadingSorted">xmlXPathNodeLeadingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailing">xmlXPathNodeTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeTrailingSorted">xmlXPathNodeTrailingSorted</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailing">xmlXPathTrailing</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathTrailingSorted">xmlXPathTrailingSorted</a><br /> +</dd><dt>Element</dt><dd><a href="html/libxml-tree.html#_xmlAttribute">_xmlAttribute</a><br /> +<a href="html/libxml-tree.html#_xmlElement">_xmlElement</a><br /> +<a href="html/libxml-tree.html#_xmlElementContent">_xmlElementContent</a><br /> +<a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +<a href="html/libxml-tree.html#xmlFirstElementChild">xmlFirstElementChild</a><br /> +<a href="html/libxml-tree.html#xmlLastElementChild">xmlLastElementChild</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementDecl">xmlParseElementDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadString">xmlTextReaderReadString</a><br /> +<a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneElement">xmlValidateOneElement</a><br /> +<a href="html/libxml-valid.html#xmlValidateRoot">xmlValidateRoot</a><br /> +</dd><dt>ElementTable</dt><dd><a href="html/libxml-HTMLparser.html#htmlTagLookup">htmlTagLookup</a><br /> +</dd><dt>Empties</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathEmptyNodeSet">xmlXPathEmptyNodeSet</a><br /> +</dd><dt>EmptyElemTag</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseElement">htmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElement">xmlParseElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>EmptyElement</dt><dd><a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>EncName</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncName">xmlParseEncName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br /> +</dd><dt>Encapsulating</dt><dd><a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +</dd><dt>EnclosedAlphanumerics</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsEnclosedAlphanumerics">xmlUCSIsEnclosedAlphanumerics</a><br /> +</dd><dt>EnclosedCJKLettersandMonths</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsEnclosedCJKLettersandMonths">xmlUCSIsEnclosedCJKLettersandMonths</a><br /> +</dd><dt>Encoding</dt><dd><a href="html/libxml-HTMLtree.html#htmlGetMetaEncoding">htmlGetMetaEncoding</a><br /> +<a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +</dd><dt>EncodingDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEncodingDecl">xmlParseEncodingDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br /> +</dd><dt>EncodingDecl?</dt><dd><a href="html/libxml-parserInternals.html#xmlParseXMLDecl">xmlParseXMLDecl</a><br /> +</dd><dt>End</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-tree.html#_xmlNode">_xmlNode</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndAttribute">xmlTextWriterEndAttribute</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndCDATA">xmlTextWriterEndCDATA</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndComment">xmlTextWriterEndComment</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDTD">xmlTextWriterEndDTD</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDTDAttlist">xmlTextWriterEndDTDAttlist</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDTDElement">xmlTextWriterEndDTDElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDTDEntity">xmlTextWriterEndDTDEntity</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndElement">xmlTextWriterEndElement</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterEndPI">xmlTextWriterEndPI</a><br /> +<a href="html/libxml-xmlwriter.html#xmlTextWriterFullEndElement">xmlTextWriterFullEndElement</a><br /> +</dd><dt>End-of-Line</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +</dd><dt>Ensures</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +</dd><dt>Entities</dt><dd><a href="html/libxml-encoding.html#xmlGetCharEncodingName">xmlGetCharEncodingName</a><br /> +<a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br /> +</dd><dt>EntitiesTable</dt><dd><a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> +</dd><dt>Entity</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-parserInternals.html#xmlNewEntityInputStream">xmlNewEntityInputStream</a><br /> +<a href="html/libxml-tree.html#xmlNodeBufGetContent">xmlNodeBufGetContent</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetBase">xmlNodeGetBase</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetContent">xmlNodeGetContent</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParsePEReference">xmlParsePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeValue">xmlValidateAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneAttribute">xmlValidateOneAttribute</a><br /> +<a href="html/libxml-valid.html#xmlValidateOneNamespace">xmlValidateOneNamespace</a><br /> +</dd><dt>EntityDecl</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>EntityDef</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +</dd><dt>EntityRef</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseReference">xmlParseReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +</dd><dt>EntityReference</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderReadAttributeValue">xmlTextReaderReadAttributeValue</a><br /> +</dd><dt>EntityValue</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br /> +</dd><dt>Enumerated</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br /> +</dd><dt>EnumeratedType</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttributeType">xmlParseAttributeType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br /> +</dd><dt>Enumeration</dt><dd><a href="html/libxml-tree.html#_xmlEnumeration">_xmlEnumeration</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumeratedType">xmlParseEnumeratedType</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEnumerationType">xmlParseEnumerationType</a><br /> +<a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br /> +</dd><dt>Equal</dt><dd><a href="html/libxml-xmlstring.html#xmlStrQEqual">xmlStrQEqual</a><br /> +</dd><dt>Escaping</dt><dd><a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>Ethiopic</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsEthiopic">xmlUCSIsEthiopic</a><br /> +</dd><dt>Evaluate</dt><dd><a href="html/libxml-xpath.html#xmlXPathCompiledEval">xmlXPathCompiledEval</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEval">xmlXPathEval</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalExpression">xmlXPathEvalExpression</a><br /> +<a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrEval">xmlXPtrEval</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> +</dd><dt>Evaluates</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpExpDerive">xmlExpExpDerive</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br /> +</dd><dt>Everything</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br /> +<a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2SetDocumentLocator">xmlSAX2SetDocumentLocator</a><br /> +</dd><dt>Examines</dt><dd><a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +</dd><dt>Exclusive</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>Existing</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashRemoveEntry3">xmlHashRemoveEntry3</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry">xmlHashUpdateEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry2">xmlHashUpdateEntry2</a><br /> +<a href="html/libxml-hash.html#xmlHashUpdateEntry3">xmlHashUpdateEntry3</a><br /> +</dd><dt>Exp</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataCompile">xmlAutomataCompile</a><br /> +</dd><dt>Experimental</dt><dd><a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br /> +</dd><dt>Expr</dt><dd><a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +<a href="html/libxml-xpointer.html#xmlXPtrEvalRangePredicate">xmlXPtrEvalRangePredicate</a><br /> +</dd><dt>Expresses</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>Expression</dt><dd><a href="html/libxml-xpath.html#xmlXPathEvalPredicate">xmlXPathEvalPredicate</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEvaluatePredicateResult">xmlXPathEvaluatePredicateResult</a><br /> +</dd><dt>Extender</dt><dd><a href="html/libxml-parserInternals.html#IS_EXTENDER">IS_EXTENDER</a><br /> +<a href="html/libxml-parserInternals.html#xmlNamespaceParseNCName">xmlNamespaceParseNCName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseName">xmlParseName</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseNCName">xmlXPathParseNCName</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseName">xmlXPathParseName</a><br /> +</dd><dt>External</dt><dd><a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +<a href="html/libxml-catalog.html#xmlACatalogResolve">xmlACatalogResolve</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogLocalResolve">xmlCatalogLocalResolve</a><br /> +<a href="html/libxml-catalog.html#xmlCatalogResolve">xmlCatalogResolve</a><br /> +<a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parser.html#xmlParseDTD">xmlParseDTD</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseDTD">xmlSAXParseDTD</a><br /> +</dd><dt>ExternalID</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDocTypeDecl">xmlParseDocTypeDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityDecl">xmlParseEntityDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseExternalID">xmlParseExternalID</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationDecl">xmlParseNotationDecl</a><br /> +</dd><dt>Extract</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrsub">xmlStrsub</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk20.html b/libxml2-2.7.7/doc/APIchunk20.html new file mode 100644 index 0000000..f39da0e --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk20.html
@@ -0,0 +1,331 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index n-n for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index n-n for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter n:</h2><dl><dt>named</dt><dd><a href="html/libxml-encoding.html#xmlAddEncodingAlias">xmlAddEncodingAlias</a><br /> +</dd><dt>names</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br /> +<a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br /> +<a href="html/libxml-hash.html#xmlHashAddEntry">xmlHashAddEntry</a><br /> +<a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseNotationType">xmlParseNotationType</a><br /> +<a href="html/libxml-valid.html#xmlValidGetPotentialChildren">xmlValidGetPotentialChildren</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>namespace-binding</dt><dd><a href="html/libxml-tree.html#xmlSetProp">xmlSetProp</a><br /> +</dd><dt>namespace-uri</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNamespaceURIFunction">xmlXPathNamespaceURIFunction</a><br /> +</dd><dt>namespace:</dt><dd><a href="html/libxml-xinclude.html#XINCLUDE_NS">XINCLUDE_NS</a><br /> +<a href="html/libxml-xinclude.html#XINCLUDE_OLD_NS">XINCLUDE_OLD_NS</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseStartTag">xmlParseStartTag</a><br /> +</dd><dt>namespaces</dt><dd><a href="html/libxml-xpath.html#XML_XPATH_CHECKNS">XML_XPATH_CHECKNS</a><br /> +<a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br /> +<a href="html/libxml-tree.html#xmlCopyNode">xmlCopyNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAcquireNsFunction">xmlDOMWrapAcquireNsFunction</a><br /> +<a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br /> +<a href="html/libxml-tree.html#xmlFreeNsList">xmlFreeNsList</a><br /> +<a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br /> +<a href="html/libxml-parser.html#xmlParseInNodeContext">xmlParseInNodeContext</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +</dd><dt>naming</dt><dd><a href="html/libxml-tree.html#xmlChildrenNode">xmlChildrenNode</a><br /> +<a href="html/libxml-tree.html#xmlRootNode">xmlRootNode</a><br /> +</dd><dt>nbBytes</dt><dd><a href="html/libxml-xmlmemory.html#xmlMemDisplayLast">xmlMemDisplayLast</a><br /> +</dd><dt>nbval</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +</dd><dt>ncname</dt><dd><a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +</dd><dt>ndata</dt><dd><a href="html/libxml-entities.html#_xmlEntity">_xmlEntity</a><br /> +</dd><dt>nearest</dt><dd><a href="html/libxml-tree.html#xmlNodeGetLang">xmlNodeGetLang</a><br /> +<a href="html/libxml-tree.html#xmlNodeGetSpacePreserve">xmlNodeGetSpacePreserve</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br /> +</dd><dt>nearly</dt><dd><a href="html/libxml-parser.html#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a><br /> +<a href="html/libxml-parser.html#xmlSAXParseMemoryWithData">xmlSAXParseMemoryWithData</a><br /> +</dd><dt>necessary</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +<a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br /> +<a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-debugXML.html#xmlDebugDumpString">xmlDebugDumpString</a><br /> +</dd><dt>needed</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +<a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br /> +<a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br /> +<a href="html/libxml-xlink.html#xlinkIsLink">xlinkIsLink</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-tree.html#xmlGetBufferAllocationScheme">xmlGetBufferAllocationScheme</a><br /> +<a href="html/libxml-catalog.html#xmlLoadSGMLSuperCatalog">xmlLoadSGMLSuperCatalog</a><br /> +<a href="html/libxml-entities.html#xmlNewEntity">xmlNewEntity</a><br /> +<a href="html/libxml-tree.html#xmlNewNodeEatName">xmlNewNodeEatName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br /> +<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br /> +<a href="html/libxml-xmlschemas.html#xmlSchemaSAXPlug">xmlSchemaSAXPlug</a><br /> +<a href="html/libxml-tree.html#xmlSetBufferAllocationScheme">xmlSetBufferAllocationScheme</a><br /> +<a href="html/libxml-debugXML.html#xmlShellPwd">xmlShellPwd</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrncat">xmlStrncat</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopBoolean">xmlXPathPopBoolean</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopExternal">xmlXPathPopExternal</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNodeSet">xmlXPathPopNodeSet</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopNumber">xmlXPathPopNumber</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathPopString">xmlXPathPopString</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>needing</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +<a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br /> +</dd><dt>needle</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br /> +<a href="html/libxml-xmlstring.html#xmlStrstr">xmlStrstr</a><br /> +</dd><dt>needs</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>negated</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br /> +</dd><dt>negative</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSave">xmlC14NDocSave</a><br /> +<a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecErrInfo">xmlRegExecErrInfo</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecNextValues">xmlRegExecNextValues</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br /> +<a href="html/libxml-debugXML.html#xmlShellCmd">xmlShellCmd</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringEvalNumber">xmlXPathStringEvalNumber</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>neither</dt><dd><a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br /> +<a href="html/libxml-tree.html#xmlHasProp">xmlHasProp</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +</dd><dt>nested</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>net</dt><dd><a href="html/libxml-xpath.html#xmlXPathIsInf">xmlXPathIsInf</a><br /> +<a href="html/libxml-xpath.html#xmlXPathIsNaN">xmlXPathIsNaN</a><br /> +</dd><dt>network</dt><dd><a href="html/libxml-HTMLparser.html#htmlCtxtReadFile">htmlCtxtReadFile</a><br /> +<a href="html/libxml-HTMLparser.html#htmlReadFile">htmlReadFile</a><br /> +<a href="html/libxml-parser.html#xmlCtxtReadFile">xmlCtxtReadFile</a><br /> +<a href="html/libxml-xmlIO.html#xmlNoNetExternalEntityLoader">xmlNoNetExternalEntityLoader</a><br /> +<a href="html/libxml-parser.html#xmlReadFile">xmlReadFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderForFile">xmlReaderForFile</a><br /> +<a href="html/libxml-xmlreader.html#xmlReaderNewFile">xmlReaderNewFile</a><br /> +</dd><dt>nice</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br /> +</dd><dt>nillable</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a><br /> +<a href="html/libxml-xmlregexp.html#xmlExpIsNillable">xmlExpIsNillable</a><br /> +</dd><dt>nod</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br /> +</dd><dt>node-</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +<a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br /> +</dd><dt>node-set?</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathLocalNameFunction">xmlXPathLocalNameFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNamespaceURIFunction">xmlXPathNamespaceURIFunction</a><br /> +</dd><dt>nodeInfos</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>nodelist</dt><dd><a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br /> +</dd><dt>nodes1</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +</dd><dt>nodes2</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br /> +</dd><dt>nodeset</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br /> +</dd><dt>nodesets</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetMerge">xmlXPathNodeSetMerge</a><br /> +</dd><dt>non</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a><br /> +<a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br /> +<a href="html/libxml-tree.html#xmlNewChild">xmlNewChild</a><br /> +<a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderBaseUri">xmlTextReaderBaseUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderLocalName">xmlTextReaderLocalName</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderLocatorBaseURI">xmlTextReaderLocatorBaseURI</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderName">xmlTextReaderName</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNamespaceUri">xmlTextReaderNamespaceUri</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderPrefix">xmlTextReaderPrefix</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderXmlLang">xmlTextReaderXmlLang</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathParseNCName">xmlXPathParseNCName</a><br /> +</dd><dt>non-CDATA</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>non-NULL</dt><dd><a href="html/libxml-HTMLparser.html#htmlParseEntityRef">htmlParseEntityRef</a><br /> +<a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityValue">xmlParseEntityValue</a><br /> +</dd><dt>non-UTF-8</dt><dd><a href="html/libxml-parser.html#xmlByteConsumed">xmlByteConsumed</a><br /> +</dd><dt>non-blank</dt><dd><a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +</dd><dt>non-determinist</dt><dd><a href="html/libxml-valid.html#_xmlValidCtxt">_xmlValidCtxt</a><br /> +</dd><dt>non-empty</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +</dd><dt>non-final</dt><dd><a href="html/libxml-xmlregexp.html#xmlRegExecPushString">xmlRegExecPushString</a><br /> +<a href="html/libxml-xmlregexp.html#xmlRegExecPushString2">xmlRegExecPushString2</a><br /> +</dd><dt>non-negative</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br /> +<a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br /> +</dd><dt>non-normative</dt><dd><a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br /> +</dd><dt>non-null</dt><dd><a href="html/libxml-debugXML.html#xmlShellPrintNode">xmlShellPrintNode</a><br /> +</dd><dt>non-recursive</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br /> +</dd><dt>non-stateless</dt><dd><a href="html/libxml-encoding.html#xmlCharEncOutFunc">xmlCharEncOutFunc</a><br /> +</dd><dt>non-validating</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +</dd><dt>non-zero</dt><dd><a href="html/libxml-SAX.html#initxmlDefaultSAXHandler">initxmlDefaultSAXHandler</a><br /> +<a href="html/libxml-parser.html#xmlHasFeature">xmlHasFeature</a><br /> +<a href="html/libxml-parserInternals.html#xmlIsLetter">xmlIsLetter</a><br /> +<a href="html/libxml-SAX2.html#xmlSAX2InitDefaultSAXHandler">xmlSAX2InitDefaultSAXHandler</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +</dd><dt>none</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +<a href="html/libxml-SAX.html#getNamespace">getNamespace</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-tree.html#xmlGetLastChild">xmlGetLastChild</a><br /> +<a href="html/libxml-xmlIO.html#xmlOutputBufferCreateFilename">xmlOutputBufferCreateFilename</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetAsString">xmlSchemaValueGetAsString</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValueGetNext">xmlSchemaValueGetNext</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringDecodeEntities">xmlStringDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlStringLenDecodeEntities">xmlStringLenDecodeEntities</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderConstXmlLang">xmlTextReaderConstXmlLang</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderXmlLang">xmlTextReaderXmlLang</a><br /> +</dd><dt>nor</dt><dd><a href="html/libxml-tree.html#xmlBufferCreateStatic">xmlBufferCreateStatic</a><br /> +<a href="html/libxml-tree.html#xmlBuildQName">xmlBuildQName</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br /> +<a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadInnerXml">xmlTextReaderReadInnerXml</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderReadOuterXml">xmlTextReaderReadOuterXml</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br /> +</dd><dt>normal</dt><dd><a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br /> +<a href="html/libxml-xmlIO.html#xmlParserInputBufferGrow">xmlParserInputBufferGrow</a><br /> +</dd><dt>normalization</dt><dd><a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +</dd><dt>normalization:</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +</dd><dt>normalizations</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>normalize</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaCollapseString">xmlSchemaCollapseString</a><br /> +<a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br /> +</dd><dt>normalize-space</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +</dd><dt>normalized</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_NORMVALUENEEDED">XML_SCHEMAS_TYPE_NORMVALUENEEDED</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br /> +<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br /> +<a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br /> +<a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br /> +</dd><dt>normalizing</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br /> +</dd><dt>normally</dt><dd><a href="html/libxml-tree.html#_xmlNs">_xmlNs</a><br /> +<a href="">c</a><br /> +<a href="html/libxml-valid.html#xmlValidityErrorFunc">xmlValidityErrorFunc</a><br /> +<a href="html/libxml-valid.html#xmlValidityWarningFunc">xmlValidityWarningFunc</a><br /> +</dd><dt>notations</dt><dd><a href="html/libxml-tree.html#_xmlDtd">_xmlDtd</a><br /> +<a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br /> +</dd><dt>note</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br /> +</dd><dt>notice</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br /> +<a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br /> +</dd><dt>now</dt><dd><a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br /> +<a href="html/libxml-schemasInternals.html#_xmlSchemaElement">_xmlSchemaElement</a><br /> +<a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br /> +<a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br /> +<a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br /> +</dd><dt>ns-binding</dt><dd><a href="html/libxml-tree.html#xmlSetProp">xmlSetProp</a><br /> +</dd><dt>ns-decls</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +</dd><dt>ns-references</dt><dd><a href="html/libxml-tree.html#xmlDOMWrapReconcileNamespaces">xmlDOMWrapReconcileNamespaces</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>nsDef</dt><dd><a href="html/libxml-tree.html#_xmlDOMWrapCtxt">_xmlDOMWrapCtxt</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapAdoptNode">xmlDOMWrapAdoptNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapCloneNode">xmlDOMWrapCloneNode</a><br /> +<a href="html/libxml-tree.html#xmlDOMWrapRemoveNode">xmlDOMWrapRemoveNode</a><br /> +</dd><dt>null</dt><dd><a href="html/libxml-hash.html#xmlHashScan3">xmlHashScan3</a><br /> +<a href="html/libxml-hash.html#xmlHashScanFull3">xmlHashScanFull3</a><br /> +<a href="html/libxml-debugXML.html#xmlShellDu">xmlShellDu</a><br /> +</dd><dt>null-terminated</dt><dd><a href="html/libxml-xmlstring.html#xmlCheckUTF8">xmlCheckUTF8</a><br /> +</dd><dt>number:</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_VERSION">LIBXML_VERSION</a><br /> +</dd><dt>number?</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +</dd><dt>numbers</dt><dd><a href="html/libxml-parser.html#xmlLineNumbersDefault">xmlLineNumbersDefault</a><br /> +<a href="html/libxml-xmlstring.html#xmlUTF8Size">xmlUTF8Size</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +<a href="html/libxml-xpath.html#xmlXPathOrderDocElems">xmlXPathOrderDocElems</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathRoundFunction">xmlXPathRoundFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br /> +</dd><dt>numeric</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubstringFunction">xmlXPathSubstringFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathValueFlipSign">xmlXPathValueFlipSign</a><br /> +</dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/libxml2-2.7.7/doc/APIchunk21.html b/libxml2-2.7.7/doc/APIchunk21.html new file mode 100644 index 0000000..f114c8e --- /dev/null +++ b/libxml2-2.7.7/doc/APIchunk21.html
@@ -0,0 +1,390 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css"> +TD {font-family: Verdana,Arial,Helvetica} +BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em} +H1 {font-family: Verdana,Arial,Helvetica} +H2 {font-family: Verdana,Arial,Helvetica} +H3 {font-family: Verdana,Arial,Helvetica} +A:link, A:visited, A:active { text-decoration: underline } +</style><title>API Alphabetic Index o-o for libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>API Alphabetic Index o-o for libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Developer Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html" style="font-weight:bold">Main Menu</a></li><li><a href="html/index.html" style="font-weight:bold">Reference Manual</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="tutorial/index.html">Tutorial</a></li><li><a href="xmlreader.html">The Reader Interface</a></li><li><a href="ChangeLog.html">ChangeLog</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="python.html">Python and bindings</a></li><li><a href="architecture.html">libxml2 architecture</a></li><li><a href="tree.html">The tree output</a></li><li><a href="interface.html">The SAX interface</a></li><li><a href="xmlmem.html">Memory Management</a></li><li><a href="xmlio.html">I/O Interfaces</a></li><li><a href="library.html">The parser interfaces</a></li><li><a href="entities.html">Entities or no entities</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="upgrade.html">Upgrading 1.x code</a></li><li><a href="threads.html">Thread safety</a></li><li><a href="DOM.html">DOM Principles</a></li><li><a href="example.html">A real example</a></li><li><a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="APIchunk0.html">Alphabetic</a></li><li><a href="APIconstructors.html">Constructors</a></li><li><a href="APIfunctions.html">Functions/Types</a></li><li><a href="APIfiles.html">Modules</a></li><li><a href="APIsymbols.html">Symbols</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://codespeak.net/lxml/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h2 align="center"><a href="APIchunk0.html">A-B</a> +<a href="APIchunk1.html">C-C</a> +<a href="APIchunk2.html">D-E</a> +<a href="APIchunk3.html">F-I</a> +<a href="APIchunk4.html">J-N</a> +<a href="APIchunk5.html">O-P</a> +<a href="APIchunk6.html">Q-R</a> +<a href="APIchunk7.html">S-S</a> +<a href="APIchunk8.html">T-U</a> +<a href="APIchunk9.html">V-Y</a> +<a href="APIchunk10.html">Z-a</a> +<a href="APIchunk11.html">b-b</a> +<a href="APIchunk12.html">c-c</a> +<a href="APIchunk13.html">d-d</a> +<a href="APIchunk14.html">e-e</a> +<a href="APIchunk15.html">f-f</a> +<a href="APIchunk16.html">g-h</a> +<a href="APIchunk17.html">i-i</a> +<a href="APIchunk18.html">j-l</a> +<a href="APIchunk19.html">m-m</a> +<a href="APIchunk20.html">n-n</a> +<a href="APIchunk21.html">o-o</a> +<a href="APIchunk22.html">p-p</a> +<a href="APIchunk23.html">q-r</a> +<a href="APIchunk24.html">s-s</a> +<a href="APIchunk25.html">t-t</a> +<a href="APIchunk26.html">u-v</a> +<a href="APIchunk27.html">w-w</a> +<a href="APIchunk28.html">x-x</a> +<a href="APIchunk29.html">y-z</a> +</h2><h2>Letter o:</h2><dl><dt>object?</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNumberFunction">xmlXPathNumberFunction</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br /> +</dd><dt>objects</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathDivValues">xmlXPathDivValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathEqualValues">xmlXPathEqualValues</a><br /> +<a href="html/libxml-xpath.html#xmlXPathFreeNodeSetList">xmlXPathFreeNodeSetList</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a><br /> +</dd><dt>objects:</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathAddValues">xmlXPathAddValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathModValues">xmlXPathModValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br /> +<a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br /> +</dd><dt>obligated</dt><dd><a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br /> +</dd><dt>obsolete</dt><dd><a href="html/libxml-xmlIO.html#xmlNormalizeWindowsPath">xmlNormalizeWindowsPath</a><br /> +</dd><dt>obsolete:</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a><br /> +</dd><dt>occupied</dt><dd><a href="html/libxml-uri.html#xmlCanonicPath">xmlCanonicPath</a><br /> +<a href="html/libxml-uri.html#xmlPathToURI">xmlPathToURI</a><br /> +</dd><dt>occur</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseComment">xmlParseComment</a><br /> +<a href="html/libxml-parserInternals.html#xmlParseMarkupDecl">xmlParseMarkupDecl</a><br /> +</dd><dt>occured</dt><dd><a href="html/libxml-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a><br /> +<a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br /> +<a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br /> +<a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br /> +<a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br /> +<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a>&