This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, libjava] Use accessor functions to manipulate xmlOutputBuffer
- From: Dodji Seketeli <dodji at redhat dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Tom Tromey <tromey at redhat dot com>, Andrew Haley <aph at redhat dot com>, Daniel Veillard <veillard at redhat dot com>
- Date: Thu, 09 Aug 2012 00:08:20 +0200
- Subject: [PATCH, libjava] Use accessor functions to manipulate xmlOutputBuffer
Hello,
This is a fix to prepare the xmlj_io.c file of gnu classpath to a coming
API change in libxml2.
Basically, we were previously accessing fields inside the
xmlOutputBuffer struct of libxml2. In a coming version of libxml2,
that won't be possible anymore. Client code will have to use accessor
functions instead. For the gory details, there is an interestin note
of Daniel Veillard (author of libxml2) at
https://mail.gnome.org/archives/desktop-devel-list/2012-August/msg00007.html.
This patch defines too accessor macros that, depending on the version
of libxml2 we are using will either access the fields of
xmlOutputBuffer directly, or use the new accessor function.
Bootstrapped and tested on x86_64-unknown-linux-gnu against trunk.
OK to commit?
libjava/classpath/
* native/jni/xmlj/xmlj_io.c (GET_XML_OUTPUT_BUFFER_CONTENT)
(GET_XML_OUTPUT_BUFFER_SIZE): New macros.
(xmljOutputWriteCallback): Use them.
---
libjava/classpath/native/jni/xmlj/xmlj_io.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/libjava/classpath/native/jni/xmlj/xmlj_io.c b/libjava/classpath/native/jni/xmlj/xmlj_io.c
index aa2964d..a55e48d 100644
--- a/libjava/classpath/native/jni/xmlj/xmlj_io.c
+++ b/libjava/classpath/native/jni/xmlj/xmlj_io.c
@@ -102,6 +102,19 @@ xmljFreeOutputStreamContext (OutputStreamContext * outContext);
xmlCharEncoding
xmljDetectCharEncoding (JNIEnv * env, jbyteArray buffer);
+
+#ifdef LIBXML2_NEW_BUFFER
+#define GET_XML_OUTPUT_BUFFER_CONTENT(buf) (gchar *) \
+ (char *) xmlOutputBufferGetContent(buf)
+#define GET_XML_OUTPUT_BUFFER_SIZE(buf) \
+ xmlOutputBufferGetSize(buf)
+#else
+#define GET_XML_OUTPUT_BUFFER_CONTENT(buf) \
+ (buf)->buffer->content
+#define GET_XML_OUTPUT_BUFFER_SIZE(buf) \
+ (buf)->buffer->use
+#endif
+
int
xmljOutputWriteCallback (void *context, const char *buffer, int len)
{
@@ -752,9 +765,10 @@ xmljLoadExternalEntity (const char *URL, const char *ID,
inputStream->directory = NULL;
inputStream->buf = inputBuffer;
- inputStream->base = inputStream->buf->buffer->content;
- inputStream->cur = inputStream->buf->buffer->content;
- inputStream->end = &inputStream->base[inputStream->buf->buffer->use];
+ inputStream->base = GET_XML_OUTPUT_BUFFER_CONTENT (inputStream->buf);
+ inputStream->cur = GET_XML_OUTPUT_BUFFER_CONTENT (inputStream->buf);
+ inputStream->end =
+ &inputStream->base[GET_XML_OUTPUT_BUFFER_SIZE (inputStream->buf)];
if ((ctxt->directory == NULL) && (inputStream->directory != NULL))
ctxt->directory =
(char *) xmlStrdup ((const xmlChar *) inputStream->directory);
--
Dodji