Big changes, seems that 1.2.0 wasn't commited, here is 1.3.0, Daniel
diff --git a/include/libxml/encoding.h b/include/libxml/encoding.h
index 3c5cee0..227abaf 100644
--- a/include/libxml/encoding.h
+++ b/include/libxml/encoding.h
@@ -25,6 +25,9 @@
extern "C" {
#endif
+/**
+ * Predefined values for some standard encodings
+ */
typedef enum {
XML_CHAR_ENCODING_ERROR= -1, /* No char encoding detected */
XML_CHAR_ENCODING_NONE= 0, /* No char encoding detected */
@@ -51,8 +54,57 @@
XML_CHAR_ENCODING_EUC_JP= 21,/* EUC-JP */
} xmlCharEncoding;
-extern xmlCharEncoding xmlDetectCharEncoding(const unsigned char* in);
-extern xmlCharEncoding xmlParseCharEncoding(const char* name);
+/**
+ * xmlCharEncodingInputFunc:
+ * @out: a pointer ot an array of bytes to store the UTF-8 result
+ * @outlen: the lenght of @out
+ * @in: a pointer ot an array of chars in the original encoding
+ * @inlen: the lenght of @in
+ *
+ * Take a block of chars in the original encoding and try to convert
+ * it to an UTF-8 block of chars out.
+ *
+ * Returns the number of byte written, or -1 by lack of space.
+ */
+typedef int (* xmlCharEncodingInputFunc)(unsigned char* out, int outlen,
+ unsigned char* in, int inlen);
+
+
+/**
+ * xmlCharEncodingInputFunc:
+ * @out: a pointer ot an array of bytes to store the result
+ * @outlen: the lenght of @out
+ * @in: a pointer ot an array of UTF-8 chars
+ * @inlen: the lenght of @in
+ *
+ * Take a block of UTF-8 chars in and try to convert it to an other
+ * encoding.
+ *
+ * Returns the number of byte written, or -1 by lack of space, or -2
+ * if the transcoding failed.
+ */
+typedef int (* xmlCharEncodingOutputFunc)(unsigned char* out, int outlen,
+ unsigned char* in, int inlen);
+
+/*
+ * Block defining the handlers for non UTF-8 encodings.
+ */
+
+typedef struct xmlCharEncodingHandler {
+ char *name;
+ xmlCharEncodingInputFunc input;
+ xmlCharEncodingOutputFunc output;
+} xmlCharEncodingHandler;
+typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
+
+void xmlRegisterCharEncodingHandler(xmlCharEncodingHandlerPtr handler);
+xmlCharEncodingHandlerPtr xmlGetCharEncodingHandler(xmlCharEncoding enc);
+xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char *name);
+
+xmlCharEncoding xmlDetectCharEncoding(const unsigned char* in);
+xmlCharEncoding xmlParseCharEncoding(const char* name);
+
+void xmlInitCharEncodingHandlers(void);
#ifdef __cplusplus
}
diff --git a/include/libxml/entities.h b/include/libxml/entities.h
index b653542..8604057 100644
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -66,7 +66,8 @@
xmlEntityPtr xmlGetPredefinedEntity(const CHAR *name);
xmlEntityPtr xmlGetDocEntity(xmlDocPtr doc, const CHAR *name);
xmlEntityPtr xmlGetDtdEntity(xmlDocPtr doc, const CHAR *name);
-CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
+const CHAR *xmlEncodeEntities(xmlDocPtr doc, const CHAR *input);
+CHAR *xmlEncodeEntitiesReentrant(xmlDocPtr doc, const CHAR *input);
xmlEntitiesTablePtr xmlCreateEntitiesTable(void);
xmlEntitiesTablePtr xmlCopyEntitiesTable(xmlEntitiesTablePtr table);
void xmlFreeEntitiesTable(xmlEntitiesTablePtr table);
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index aaab58c..0b8d22f 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -10,6 +10,7 @@
#define __XML_PARSER_H__
#include "tree.h"
+#include "xmlIO.h"
#ifdef __cplusplus
extern "C" {
@@ -22,6 +23,9 @@
typedef void (* xmlParserInputDeallocate)(CHAR *);
typedef struct xmlParserInput {
+ /* Input buffer */
+ xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */
+
const char *filename; /* The file analyzed, if any */
const CHAR *base; /* Base of the array to parse */
const CHAR *cur; /* Current char being parsed */
@@ -169,8 +173,10 @@
/*
* Global variables: just the SAX interface tables we are looking for full
- * reentrancy of the code !
+ * reentrancy of the code and version infos.
*/
+extern const char *xmlParserVersion;
+
extern xmlSAXLocator xmlDefaultSAXLocator;
extern xmlSAXHandler xmlDefaultSAXHandler;
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index 6a31c51..b107718 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -614,10 +614,10 @@
xmlParseDocTypeDecl(xmlParserCtxtPtr ctxt);
CHAR *
xmlParseAttribute(xmlParserCtxtPtr ctxt, CHAR **value);
-void
+CHAR *
xmlParseStartTag(xmlParserCtxtPtr ctxt);
void
-xmlParseEndTag(xmlParserCtxtPtr ctxt);
+xmlParseEndTag(xmlParserCtxtPtr ctxt, CHAR *tagname);
void
xmlParseCDSect(xmlParserCtxtPtr ctxt);
void
diff --git a/include/libxml/xmlIO.h b/include/libxml/xmlIO.h
new file mode 100644
index 0000000..d6edcae
--- /dev/null
+++ b/include/libxml/xmlIO.h
@@ -0,0 +1,40 @@
+/*
+ * xmlIO.h : interface for the I/O interfaces used by the parser
+ *
+ * See Copyright for the status of this software.
+ *
+ * Daniel.Veillard@w3.org
+ */
+
+#ifndef __XML_IO_H__
+#define __XML_IO_H__
+
+#include <stdio.h>
+#include "tree.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct xmlParserInputBuffer {
+ /* Inputs */
+ FILE *file; /* Input on file handler */
+ int fd; /* Input on a file descriptor */
+/**********
+#ifdef HAVE_ZLIB_H
+ gzFile gzfile; Input on a compressed stream
+#endif
+ */
+
+
+ xmlBufferPtr buffer; /* Local buffer encoded in UTF-8 */
+
+} xmlParserInputBuffer;
+
+typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __XML_IO_H__ */