Re: [PATCH, libjava] Use accessor functions to manipulate xmlOutputBuffer

Andrew Hughes <[email protected]>
Newsgroups gmane.comp.gcc.java.patches
Message-ID <[email protected]>
----- Original Message -----
> On 08/08/2012 11:08 PM, Dodji Seketeli wrote:
> > 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?
> 
> OK.
> 

As this is a GNU Classpath change, it should go in there first to avoid creating
a divergence which will cause later problems in merging.  Classpath is regularly
merged into gcj as a whole.

I found several patches during the last merge which had only been added to gcj
(some without ChangeLog entries) and this slowed the process down considerably.

Dodji, I can push this to Classpath on your behalf if you don't have commit
access.

> Thanks,
> Andrew.
> 
> 
> > 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);
> > 
> 
> 

Thanks,
-- 
Andrew :)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

PGP Key: 248BDC07 (https://keys.indymedia.org/)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F  8F91 3B96 A578 248B DC07
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.