mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-09 05:10:05 +02:00
libplist: remove old 1.12 version. (#9230)
Only `libusbmuxd` uses `libplist`, but the 2.x version. Also, this version requires cmd:python (2.7) which we no longer support.
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
SUMMARY="A library to handle Apple Property Lists in binary or XML"
|
||||
DESCRIPTION="libplist is a library for reading and writing the Apple binary \
|
||||
and XML property list format. It is part of the libimobiledevice stack \
|
||||
providing access to iDevices."
|
||||
HOMEPAGE="http://www.libimobiledevice.org/"
|
||||
COPYRIGHT="2008-2010 Jonathan Beck
|
||||
2009-2014 Nikias Bassen
|
||||
2009-2014 Martin Szulecki
|
||||
2008 Matt Colyer"
|
||||
LICENSE="GNU GPL v2
|
||||
GNU LGPL v2.1"
|
||||
REVISION="2"
|
||||
SOURCE_URI="http://www.libimobiledevice.org/downloads/libplist-$portVersion.tar.bz2"
|
||||
CHECKSUM_SHA256="0effdedcb3de128c4930d8c03a3854c74c426c16728b8ab5f0a5b6bdc0b644be"
|
||||
PATCHES="libplist-$portVersion.patchset"
|
||||
|
||||
ARCHITECTURES="all"
|
||||
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
|
||||
|
||||
PROVIDES="
|
||||
libplist$secondaryArchSuffix = $portVersion compat >= 1
|
||||
lib:libplist$secondaryArchSuffix = 3.0.0 compat >= 3
|
||||
lib:libplist++$secondaryArchSuffix = 3.0.0 compat >= 3
|
||||
"
|
||||
if [ -z "$secondaryArchSuffix" ]; then
|
||||
PROVIDES="$PROVIDES
|
||||
cmd:plistutil = $portVersion compat >= 1
|
||||
"
|
||||
fi
|
||||
|
||||
REQUIRES="
|
||||
haiku$secondaryArchSuffix
|
||||
lib:libxml2$secondaryArchSuffix
|
||||
lib:libz$secondaryArchSuffix
|
||||
"
|
||||
|
||||
PROVIDES_devel="
|
||||
libplist${secondaryArchSuffix}_devel = $portVersion compat >= 1
|
||||
devel:libplist$secondaryArchSuffix = 3.0.0 compat >= 3
|
||||
devel:libplist++$secondaryArchSuffix = 3.0.0 compat >= 3
|
||||
"
|
||||
REQUIRES_devel="
|
||||
libplist$secondaryArchSuffix == $portVersion base
|
||||
devel:libxml2$secondaryArchSuffix
|
||||
"
|
||||
|
||||
BUILD_REQUIRES="
|
||||
haiku${secondaryArchSuffix}_devel
|
||||
devel:libxml2$secondaryArchSuffix
|
||||
"
|
||||
BUILD_PREREQUIRES="
|
||||
cmd:aclocal
|
||||
cmd:autoconf
|
||||
cmd:automake
|
||||
cmd:cmake
|
||||
cmd:gcc$secondaryArchSuffix
|
||||
cmd:ld$secondaryArchSuffix
|
||||
cmd:libtoolize$secondaryArchSuffix
|
||||
cmd:make
|
||||
cmd:pkg_config$secondaryArchSuffix
|
||||
cmd:python
|
||||
"
|
||||
|
||||
BUILD()
|
||||
{
|
||||
if [ -n "$secondaryArchSuffix" ]; then
|
||||
maybe_without_cython=--without-cython
|
||||
else
|
||||
maybe_without_cython=
|
||||
fi
|
||||
|
||||
runConfigure ./configure $maybe_without_cython
|
||||
|
||||
make $jobArgs
|
||||
}
|
||||
|
||||
INSTALL()
|
||||
{
|
||||
make install
|
||||
|
||||
# remove libtool files
|
||||
rm $libDir/lib*.la
|
||||
|
||||
if [ -n "$secondaryArchSuffix" ]; then
|
||||
rm -rf $binDir
|
||||
fi
|
||||
|
||||
prepareInstalledDevelLibs libplist libplist++
|
||||
fixPkgconfig
|
||||
|
||||
# devel package
|
||||
packageEntries devel \
|
||||
$developDir \
|
||||
|
||||
}
|
||||
|
||||
TEST()
|
||||
{
|
||||
make check
|
||||
}
|
||||
@@ -1,496 +0,0 @@
|
||||
From 0f98ae0857511c656383d823778eebb4f6460119 Mon Sep 17 00:00:00 2001
|
||||
From: fbrosson <fbrosson@localhost>
|
||||
Date: Wed, 31 Aug 2016 06:10:22 +0000
|
||||
Subject: gcc2
|
||||
|
||||
|
||||
diff --git a/libcnary/node.c b/libcnary/node.c
|
||||
index fadc9de..64a33e4 100644
|
||||
--- a/libcnary/node.c
|
||||
+++ b/libcnary/node.c
|
||||
@@ -87,20 +87,24 @@ int node_attach(node_t* parent, node_t* child) {
|
||||
if(parent->isLeaf == TRUE) {
|
||||
parent->isLeaf = FALSE;
|
||||
}
|
||||
+ {
|
||||
int res = node_list_add(parent->children, child);
|
||||
if (res == 0) {
|
||||
parent->count++;
|
||||
}
|
||||
return res;
|
||||
+ }
|
||||
}
|
||||
|
||||
int node_detach(node_t* parent, node_t* child) {
|
||||
if (!parent || !child) return -1;
|
||||
+ {
|
||||
int node_index = node_list_remove(parent->children, child);
|
||||
if (node_index >= 0) {
|
||||
parent->count--;
|
||||
}
|
||||
return node_index;
|
||||
+ }
|
||||
}
|
||||
|
||||
int node_insert(node_t* parent, unsigned int node_index, node_t* child)
|
||||
@@ -113,11 +117,13 @@ int node_insert(node_t* parent, unsigned int node_index, node_t* child)
|
||||
if(parent->isLeaf == TRUE) {
|
||||
parent->isLeaf = FALSE;
|
||||
}
|
||||
+ {
|
||||
int res = node_list_insert(parent->children, node_index, child);
|
||||
if (res == 0) {
|
||||
parent->count++;
|
||||
}
|
||||
return res;
|
||||
+ }
|
||||
}
|
||||
|
||||
void node_debug(node_t* node) {
|
||||
@@ -155,6 +161,7 @@ unsigned int node_n_children(struct node_t* node)
|
||||
node_t* node_nth_child(struct node_t* node, unsigned int n)
|
||||
{
|
||||
if (!node || !node->children || !node->children->begin) return NULL;
|
||||
+ {
|
||||
unsigned int node_index = 0;
|
||||
int found = 0;
|
||||
node_t *ch;
|
||||
@@ -168,6 +175,7 @@ node_t* node_nth_child(struct node_t* node, unsigned int n)
|
||||
return NULL;
|
||||
}
|
||||
return ch;
|
||||
+ }
|
||||
}
|
||||
|
||||
node_t* node_first_child(struct node_t* node)
|
||||
@@ -191,6 +199,7 @@ node_t* node_next_sibling(struct node_t* node)
|
||||
int node_child_position(struct node_t* parent, node_t* child)
|
||||
{
|
||||
if (!parent || !parent->children || !parent->children->begin || !child) return -1;
|
||||
+ {
|
||||
int node_index = 0;
|
||||
int found = 0;
|
||||
node_t *ch;
|
||||
@@ -205,15 +214,18 @@ int node_child_position(struct node_t* parent, node_t* child)
|
||||
return -1;
|
||||
}
|
||||
return node_index;
|
||||
+ }
|
||||
}
|
||||
|
||||
node_t* node_copy_deep(node_t* node, copy_func_t copy_func)
|
||||
{
|
||||
if (!node) return NULL;
|
||||
+ {
|
||||
void *data = NULL;
|
||||
if (copy_func) {
|
||||
data = copy_func(node->data);
|
||||
}
|
||||
+ {
|
||||
node_t* copy = node_create(NULL, data);
|
||||
node_t* ch;
|
||||
for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) {
|
||||
@@ -221,4 +233,6 @@ node_t* node_copy_deep(node_t* node, copy_func_t copy_func)
|
||||
node_attach(copy, cc);
|
||||
}
|
||||
return copy;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
diff --git a/libcnary/node_list.c b/libcnary/node_list.c
|
||||
index 4b268e0..51cc5cf 100644
|
||||
--- a/libcnary/node_list.c
|
||||
+++ b/libcnary/node_list.c
|
||||
@@ -51,6 +51,7 @@ node_list_t* node_list_create(node_t* node) {
|
||||
int node_list_add(node_list_t* list, node_t* node) {
|
||||
if (!list || !node) return -1;
|
||||
|
||||
+ {
|
||||
// Find the last element in the list
|
||||
node_t* last = list->end;
|
||||
|
||||
@@ -66,7 +67,7 @@ int node_list_add(node_list_t* list, node_t* node) {
|
||||
|
||||
// Set the lists prev to the new last element
|
||||
list->end = node;
|
||||
-
|
||||
+ }
|
||||
// Increment our node count for this list
|
||||
list->count++;
|
||||
return 0;
|
||||
@@ -77,7 +78,7 @@ int node_list_insert(node_list_t* list, unsigned int node_index, node_t* node) {
|
||||
if (node_index >= list->count) {
|
||||
return node_list_add(list, node);
|
||||
}
|
||||
-
|
||||
+ {
|
||||
// Get the first element in the list
|
||||
node_t* cur = list->begin;
|
||||
|
||||
@@ -114,7 +115,7 @@ int node_list_insert(node_list_t* list, unsigned int node_index, node_t* node) {
|
||||
// set prev of the new next element to our node
|
||||
node->next->prev = node;
|
||||
}
|
||||
-
|
||||
+ }
|
||||
// Increment our node count for this list
|
||||
list->count++;
|
||||
return 0;
|
||||
@@ -123,7 +124,7 @@ int node_list_insert(node_list_t* list, unsigned int node_index, node_t* node) {
|
||||
int node_list_remove(node_list_t* list, node_t* node) {
|
||||
if (!list || !node) return -1;
|
||||
if (list->count == 0) return -1;
|
||||
-
|
||||
+ {
|
||||
int node_index = 0;
|
||||
node_t* n;
|
||||
for (n = list->begin; n; n = n->next) {
|
||||
@@ -149,6 +150,7 @@ int node_list_remove(node_list_t* list, node_t* node) {
|
||||
}
|
||||
node_index++;
|
||||
}
|
||||
+ }
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff --git a/src/base64.c b/src/base64.c
|
||||
index 7128a5a..2c1c581 100644
|
||||
--- a/src/base64.c
|
||||
+++ b/src/base64.c
|
||||
@@ -46,6 +46,7 @@ static const signed char base64_table[256] = {
|
||||
char *base64encode(const unsigned char *buf, size_t *size)
|
||||
{
|
||||
if (!buf || !size || !(*size > 0)) return NULL;
|
||||
+ {
|
||||
int outlen = (*size / 3) * 4;
|
||||
char *outbuf = (char*)malloc(outlen+5); // 4 spare bytes + 1 for '\0'
|
||||
size_t n = 0;
|
||||
@@ -69,6 +70,7 @@ char *base64encode(const unsigned char *buf, size_t *size)
|
||||
outbuf[m] = 0; // 0-termination!
|
||||
*size = m;
|
||||
return outbuf;
|
||||
+ }
|
||||
}
|
||||
|
||||
static int base64decode_block(unsigned char *target, const char *data, size_t data_size)
|
||||
@@ -106,8 +108,10 @@ static int base64decode_block(unsigned char *target, const char *data, size_t da
|
||||
unsigned char *base64decode(const char *buf, size_t *size)
|
||||
{
|
||||
if (!buf) return NULL;
|
||||
+ {
|
||||
size_t len = strlen(buf);
|
||||
if (len <= 0) return NULL;
|
||||
+ {
|
||||
unsigned char *outbuf = (unsigned char*)malloc((len/4)*3+3);
|
||||
const char *ptr = buf;
|
||||
int p = 0;
|
||||
@@ -129,4 +133,6 @@ unsigned char *base64decode(const char *buf, size_t *size)
|
||||
outbuf[p] = 0;
|
||||
*size = p;
|
||||
return outbuf;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/bplist.c b/src/bplist.c
|
||||
index 40b453b..2e9021a 100644
|
||||
--- a/src/bplist.c
|
||||
+++ b/src/bplist.c
|
||||
@@ -295,6 +295,7 @@ static plist_t parse_string_node(char *bnode, uint64_t size)
|
||||
static char *plist_utf16_to_utf8(uint16_t *unistr, long len, long *items_read, long *items_written)
|
||||
{
|
||||
if (!unistr || (len <= 0)) return NULL;
|
||||
+ {
|
||||
char *outbuf = (char*)malloc(4*(len+1));
|
||||
int p = 0;
|
||||
int i = 0;
|
||||
@@ -346,6 +347,7 @@ static char *plist_utf16_to_utf8(uint16_t *unistr, long len, long *items_read, l
|
||||
outbuf[p] = 0;
|
||||
|
||||
return outbuf;
|
||||
+ }
|
||||
}
|
||||
|
||||
static plist_t parse_unicode_node(char *bnode, uint64_t size)
|
||||
@@ -750,10 +752,12 @@ PLIST_API void plist_from_bin(const char *plist_bin, uint32_t length, plist_t *
|
||||
// free unreferenced nodes that would otherwise leak memory
|
||||
for (i = 0; i < num_objects; i++) {
|
||||
if (i == root_object) continue;
|
||||
+ {
|
||||
node_t* node = (node_t*)nodeslist[i];
|
||||
if (node && NODE_IS_ROOT(node)) {
|
||||
plist_free(node);
|
||||
}
|
||||
+ }
|
||||
}
|
||||
free(nodeslist);
|
||||
}
|
||||
@@ -831,6 +835,7 @@ static void serialize_plist(node_t* node, void* data)
|
||||
//now append current node to object array
|
||||
ptr_array_add(ser->objects, node);
|
||||
|
||||
+ {
|
||||
//now recurse on children
|
||||
node_iterator_t *ni = node_iterator_create(node->children);
|
||||
node_t *ch;
|
||||
@@ -838,7 +843,7 @@ static void serialize_plist(node_t* node, void* data)
|
||||
serialize_plist(ch, data);
|
||||
}
|
||||
node_iterator_destroy(ni);
|
||||
-
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/src/bytearray.c b/src/bytearray.c
|
||||
index 2c6ce4a..66cf59e 100644
|
||||
--- a/src/bytearray.c
|
||||
+++ b/src/bytearray.c
|
||||
@@ -42,11 +42,13 @@ void byte_array_free(bytearray_t *ba)
|
||||
void byte_array_append(bytearray_t *ba, void *buf, size_t len)
|
||||
{
|
||||
if (!ba || !ba->data || (len <= 0)) return;
|
||||
+ {
|
||||
size_t remaining = ba->capacity-ba->len;
|
||||
if (len > remaining) {
|
||||
ba->data = realloc(ba->data, ba->capacity + (len - remaining));
|
||||
ba->capacity += (len - remaining);
|
||||
}
|
||||
+ }
|
||||
memcpy(((char*)ba->data) + ba->len, buf, len);
|
||||
ba->len += len;
|
||||
}
|
||||
diff --git a/src/hashtable.c b/src/hashtable.c
|
||||
index 08ff934..d993ba5 100644
|
||||
--- a/src/hashtable.c
|
||||
+++ b/src/hashtable.c
|
||||
@@ -36,26 +36,29 @@ hashtable_t* hash_table_new(hash_func_t hash_func, compare_func_t compare_func)
|
||||
void hash_table_destroy(hashtable_t *ht)
|
||||
{
|
||||
if (!ht) return;
|
||||
-
|
||||
+ {
|
||||
int i = 0;
|
||||
for (i = 0; i < 256; i++) {
|
||||
if (ht->entries[i]) {
|
||||
hashentry_t* e = ht->entries[i];
|
||||
while (e) {
|
||||
free(e->value);
|
||||
+ {
|
||||
hashentry_t* old = e;
|
||||
e = e->next;
|
||||
free(old);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
+ }
|
||||
free(ht);
|
||||
}
|
||||
|
||||
void hash_table_insert(hashtable_t* ht, void *key, void *value)
|
||||
{
|
||||
if (!ht || !key) return;
|
||||
-
|
||||
+ {
|
||||
unsigned int hash = ht->hash_func(key);
|
||||
|
||||
int idx0 = hash & 0xFF;
|
||||
@@ -72,7 +75,7 @@ void hash_table_insert(hashtable_t* ht, void *key, void *value)
|
||||
}
|
||||
|
||||
// if we get here, the element is not yet in the list.
|
||||
-
|
||||
+ {
|
||||
// make a new entry.
|
||||
hashentry_t* entry = (hashentry_t*)malloc(sizeof(hashentry_t));
|
||||
entry->key = key;
|
||||
@@ -85,12 +88,15 @@ void hash_table_insert(hashtable_t* ht, void *key, void *value)
|
||||
entry->next = ht->entries[idx0];
|
||||
}
|
||||
ht->entries[idx0] = entry;
|
||||
+ }
|
||||
+ }
|
||||
ht->count++;
|
||||
}
|
||||
|
||||
void* hash_table_lookup(hashtable_t* ht, void *key)
|
||||
{
|
||||
if (!ht || !key) return NULL;
|
||||
+ {
|
||||
unsigned int hash = ht->hash_func(key);
|
||||
|
||||
int idx0 = hash & 0xFF;
|
||||
@@ -102,5 +108,6 @@ void* hash_table_lookup(hashtable_t* ht, void *key)
|
||||
}
|
||||
e = e->next;
|
||||
}
|
||||
+ }
|
||||
return NULL;
|
||||
}
|
||||
diff --git a/src/plist.c b/src/plist.c
|
||||
index c38b6eb..ca1bf27 100644
|
||||
--- a/src/plist.c
|
||||
+++ b/src/plist.c
|
||||
@@ -75,12 +75,14 @@ static int plist_free_node(node_t* node)
|
||||
plist_free_data(data);
|
||||
node->data = NULL;
|
||||
|
||||
+ {
|
||||
node_iterator_t *ni = node_iterator_create(node->children);
|
||||
node_t *ch;
|
||||
while ((ch = node_iterator_next(ni))) {
|
||||
plist_free_node(ch);
|
||||
}
|
||||
node_iterator_destroy(ni);
|
||||
+ }
|
||||
|
||||
node_destroy(node);
|
||||
|
||||
@@ -223,12 +225,14 @@ static void plist_copy_node(node_t *node, void *parent_node_ptr)
|
||||
*(plist_t*)parent_node_ptr = newnode;
|
||||
}
|
||||
|
||||
+ {
|
||||
node_iterator_t *ni = node_iterator_create(node->children);
|
||||
node_t *ch;
|
||||
while ((ch = node_iterator_next(ni))) {
|
||||
plist_copy_node(ch, &newnode);
|
||||
}
|
||||
node_iterator_destroy(ni);
|
||||
+ }
|
||||
}
|
||||
|
||||
PLIST_API plist_t plist_copy(plist_t node)
|
||||
@@ -446,7 +450,7 @@ PLIST_API void plist_dict_merge(plist_t *target, plist_t source)
|
||||
{
|
||||
if (!target || !*target || (plist_get_node_type(*target) != PLIST_DICT) || !source || (plist_get_node_type(source) != PLIST_DICT))
|
||||
return;
|
||||
-
|
||||
+ {
|
||||
char* key = NULL;
|
||||
plist_dict_iter it = NULL;
|
||||
plist_t subnode = NULL;
|
||||
@@ -464,6 +468,7 @@ PLIST_API void plist_dict_merge(plist_t *target, plist_t source)
|
||||
key = NULL;
|
||||
} while (1);
|
||||
free(it);
|
||||
+ }
|
||||
}
|
||||
|
||||
PLIST_API plist_t plist_access_pathv(plist_t plist, uint32_t length, va_list v)
|
||||
diff --git a/src/ptrarray.c b/src/ptrarray.c
|
||||
index 56d28cb..773888a 100644
|
||||
--- a/src/ptrarray.c
|
||||
+++ b/src/ptrarray.c
|
||||
@@ -42,11 +42,13 @@ void ptr_array_free(ptrarray_t *pa)
|
||||
void ptr_array_add(ptrarray_t *pa, void *data)
|
||||
{
|
||||
if (!pa || !pa->pdata || !data) return;
|
||||
+ {
|
||||
size_t remaining = pa->capacity-pa->len;
|
||||
if (remaining == 0) {
|
||||
pa->pdata = realloc(pa->pdata, sizeof(void*) * (pa->capacity + pa->capacity_step));
|
||||
pa->capacity += pa->capacity_step;
|
||||
}
|
||||
+ }
|
||||
pa->pdata[pa->len] = data;
|
||||
pa->len++;
|
||||
}
|
||||
diff --git a/src/xplist.c b/src/xplist.c
|
||||
index 4c106aa..ea3446c 100644
|
||||
--- a/src/xplist.c
|
||||
+++ b/src/xplist.c
|
||||
@@ -72,6 +72,7 @@ static const char *plist_base = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\
|
||||
static char *format_string(const char *buf, size_t len, int cols, int depth)
|
||||
{
|
||||
if (!buf || !(len > 0)) return NULL;
|
||||
+ {
|
||||
int colw = depth + cols + 1;
|
||||
int nlines = len / cols + 1;
|
||||
char *new_buf = NULL;
|
||||
@@ -101,6 +102,7 @@ static char *format_string(const char *buf, size_t len, int cols, int depth)
|
||||
new_buf[len + (1 + depth) * nlines + depth + 1] = '\0';
|
||||
|
||||
return new_buf;
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -129,9 +131,11 @@ static struct node_t* new_key_node(const char* name)
|
||||
{
|
||||
plist_data_t data = plist_new_plist_data();
|
||||
data->type = PLIST_KEY;
|
||||
+ {
|
||||
int size = strlen(name);
|
||||
data->strval = strdup(name);
|
||||
data->length = size;
|
||||
+ }
|
||||
return node_create(NULL, data);
|
||||
}
|
||||
|
||||
@@ -386,6 +390,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node)
|
||||
}
|
||||
str++;
|
||||
}
|
||||
+ {
|
||||
char* endp = NULL;
|
||||
data->intval = strtoull((char*)str, &endp, 0);
|
||||
if ((endp != NULL) && (strlen(endp) > 0)) {
|
||||
@@ -404,6 +409,7 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node)
|
||||
data->type = PLIST_UINT;
|
||||
xmlFree(strval);
|
||||
continue;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (!xmlStrcmp(node->name, XPLIST_REAL))
|
||||
@@ -500,11 +506,13 @@ static void xml_to_node(xmlNodePtr xml_node, plist_t * plist_node)
|
||||
uint64_t val = 0;
|
||||
plist_get_uint_val(uid, &val);
|
||||
plist_dict_remove_item(subnode, "CF$UID");
|
||||
+ {
|
||||
plist_data_t nodedata = plist_get_data((node_t*)subnode);
|
||||
free(nodedata->buff);
|
||||
nodedata->type = PLIST_UID;
|
||||
nodedata->length = sizeof(uint64_t);
|
||||
nodedata->intval = val;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -525,7 +533,7 @@ PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length)
|
||||
plist_doc = new_xml_plist();
|
||||
root_node = xmlDocGetRootElement(plist_doc);
|
||||
root.xml = root_node;
|
||||
-
|
||||
+ {
|
||||
char *current_locale = setlocale(LC_NUMERIC, NULL);
|
||||
char *saved_locale = NULL;
|
||||
if (current_locale) {
|
||||
@@ -535,7 +543,7 @@ PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length)
|
||||
setlocale(LC_NUMERIC, "POSIX");
|
||||
}
|
||||
node_to_xml(plist, &root);
|
||||
-
|
||||
+ {
|
||||
xmlChar* tmp = NULL;
|
||||
xmlDocDumpMemory(plist_doc, &tmp, &size);
|
||||
if (size >= 0 && tmp)
|
||||
@@ -547,12 +555,14 @@ PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length)
|
||||
xmlFree(tmp);
|
||||
tmp = NULL;
|
||||
}
|
||||
+ }
|
||||
xmlFreeDoc(plist_doc);
|
||||
|
||||
if (saved_locale) {
|
||||
setlocale(LC_NUMERIC, saved_locale);
|
||||
free(saved_locale);
|
||||
}
|
||||
+ }
|
||||
}
|
||||
|
||||
PLIST_API void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * plist)
|
||||
--
|
||||
2.9.3
|
||||
|
||||
Reference in New Issue
Block a user