lasso/0003-perl-make-it-compatible-with-recent-libxml2.patch
Simo Sorce 1e5980de7c Enable perl bindings and fix minor build issues
Keep following upstream patches until 2.4.0 release.
The latest patches fixed perl binding, rpmlint issues with FSF license
address, and other minor build glitches.

Unfortunately make check still fails for perl so we keep perl bindings still
disabled for now.
2013-12-09 11:50:30 -05:00

72 lines
1.8 KiB
Diff

From af05f9b3179c19d8dcba641b38d76309631985ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= <fpeters@entrouvert.com>
Date: Fri, 6 Dec 2013 02:00:56 +0100
Subject: [PATCH 3/4] perl: make it compatible with recent libxml2
---
bindings/perl/glist_handling.c | 32 ++++++++++++++++++++++----------
1 file changed, 22 insertions(+), 10 deletions(-)
diff --git a/bindings/perl/glist_handling.c b/bindings/perl/glist_handling.c
index e51cc6cb9302b11f4f0ef07c10dde228b8fa83d8..01deb2746941832a1bb2fd75c0e2ac748908f26b 100644
--- a/bindings/perl/glist_handling.c
+++ b/bindings/perl/glist_handling.c
@@ -28,6 +28,25 @@
#include <lasso/utils.h>
#include "../utils.c"
+static xmlBuffer*
+xmlnode_to_xmlbuffer(xmlNode *node)
+{
+ xmlOutputBufferPtr output_buffer;
+ xmlBuffer *buffer;
+
+ if (! node)
+ return NULL;
+
+ buffer = xmlBufferCreate();
+ output_buffer = xmlOutputBufferCreateBuffer(buffer, NULL);
+ xmlNodeDumpOutput(output_buffer, NULL, node, 0, 0, NULL);
+ xmlOutputBufferClose(output_buffer);
+ xmlBufferAdd(buffer, BAD_CAST "", 1);
+
+ return buffer;
+}
+
+
/**
* xmlnode_to_pv:
* @node: an xmlNode* object
@@ -38,25 +57,18 @@
static SV*
xmlnode_to_pv(xmlNode *node, gboolean do_free)
{
- xmlOutputBufferPtr buf;
+ xmlBuffer *buf;
SV *pestring = NULL;
if (node == NULL) {
return &PL_sv_undef;
}
- buf = xmlAllocOutputBuffer(NULL);
+ buf = xmlnode_to_xmlbuffer(node);
if (buf == NULL) {
pestring = &PL_sv_undef;
} else {
- xmlNodeDumpOutput(buf, NULL, node, 0, 1, NULL);
- xmlOutputBufferFlush(buf);
- if (buf->conv == NULL) {
- pestring = newSVpv((char*)buf->buffer->content, 0);
- } else {
- pestring = newSVpv((char*)buf->conv->content, 0);
- }
- xmlOutputBufferClose(buf);
+ pestring = newSVpv((char*)xmlBufferContent(buf), 0);
}
if (do_free) {
lasso_release_xml_node(node);
--
1.8.4.2