summaryrefslogtreecommitdiff
path: root/src/xmlparser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlparser.c')
-rw-r--r--src/xmlparser.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/xmlparser.c b/src/xmlparser.c
index 672d504..e2b09d2 100644
--- a/src/xmlparser.c
+++ b/src/xmlparser.c
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <assert.h>
+#include <errno.h>
#include <glib.h>
#include "xmlparser.h"
@@ -73,7 +74,7 @@ static int xml_compare(xmlDocPtr doc, xmlNodePtr cur, const xmlChar* expr)
return 0;
}
-xmlNodePtr xml_find(xmlDocPtr doc, const xmlChar* expr)
+xmlNodePtr xml_find(xmlDocPtr doc, const char *label, const xmlChar* expr)
{
xmlNodePtr root;
xmlNodePtr cur;
@@ -88,7 +89,7 @@ xmlNodePtr xml_find(xmlDocPtr doc, const xmlChar* expr)
}
for (cur = root->children; cur != NULL; cur = cur->next) {
- if (xmlStrcmp(cur->name, (const xmlChar*)VIBRATION))
+ if (xmlStrcmp(cur->name, (const xmlChar*)label))
continue;
if (!xml_compare(doc, cur, expr))
@@ -104,8 +105,6 @@ struct xmlData *xml_parse(xmlDocPtr doc, xmlNodePtr cur)
{
xmlNodePtr node;
struct xmlData *data;
- char *b64_data;
- unsigned int len;
assert(doc);
assert(cur);
@@ -122,18 +121,31 @@ struct xmlData *xml_parse(xmlDocPtr doc, xmlNodePtr cur)
data->label = (char*)xmlNodeListGetString(doc, node->children, 1);
_D("label : %s", data->label);
} else if (!xmlStrcmp(node->name, (const xmlChar*)data_str[XML_DATA])) {
- b64_data = (char *)xmlNodeListGetString(doc, node->children, 1);
- if (b64_data != NULL) {
- _D("b64_data : %s", b64_data);
- data->data = g_base64_decode(b64_data, &len);
- xmlFree(b64_data);
- }
+ data->data = (char*)xmlNodeListGetString(doc, node->children, 1);
+ data->size = strlen(data->data);
}
}
return data;
}
+int xml_decode_data(struct xmlData *data)
+{
+ char *decode;
+ gsize len;
+
+ if (!data || !data->data)
+ return -EINVAL;
+
+ _D("b64_data : %s", data->data);
+ decode = (char*)g_base64_decode(data->data, &len);
+ free(data->data);
+
+ data->data = decode;
+ data->size = (unsigned int)len;
+ return 0;
+}
+
int xml_save(xmlDocPtr doc, const char *path)
{
int r;