diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2009-03-29 00:07:45 +0100 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-03-29 00:07:45 +0100 |
commit | bf152fe270a195bddb14010662995560e1edb481 (patch) | |
tree | 09e3b2937775153cb988beebebb175d028064e7b /database/sqlite/sqlite.c | |
parent | 5f208d0f6c0281569f14299965beff12807272c6 (diff) | |
download | eurephia-bf152fe270a195bddb14010662995560e1edb481.tar.gz eurephia-bf152fe270a195bddb14010662995560e1edb481.tar.xz eurephia-bf152fe270a195bddb14010662995560e1edb481.zip |
Fixed some possible issues with the XML implementation, regarding UTF-8
Do proper conversion from char * to xmlChar *. Need to figure out a
better way how to return xmlChar * to char * when returning strings
which may contain UTF-8.
Diffstat (limited to 'database/sqlite/sqlite.c')
-rw-r--r-- | database/sqlite/sqlite.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/database/sqlite/sqlite.c b/database/sqlite/sqlite.c index fce70ad..be86642 100644 --- a/database/sqlite/sqlite.c +++ b/database/sqlite/sqlite.c @@ -495,16 +495,31 @@ char *sqlite_get_value(dbresult *res, int row, int col) { #ifdef HAVE_LIBXML2 -xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *name, dbresult *res, int row, int col) { +xmlNodePtr sqlite_xml_value(xmlNodePtr node, xmlFieldType xmltyp, char *inname, dbresult *res, int row, int col) { + xmlChar *name = NULL, *data = NULL; + xmlNodePtr retnode = NULL; + + name = xmlCharStrdup(inname); + assert( name != NULL ); + + data = xmlCharStrdup(sqlite_get_value(res, row, col)); + switch( xmltyp ) { case XML_ATTR: - xmlNewProp(node, (xmlChar *)name, (xmlChar *) sqlite_get_value(res, row, col)); - return node; + xmlNewProp(node, name, data); + retnode = node; + break; case XML_NODE: - return xmlNewChild(node, NULL, (xmlChar *) name, (xmlChar *)sqlite_get_value(res, row, col)); + retnode = xmlNewChild(node, NULL, name, data); + break; + + default: + retnode = NULL; } - return NULL; + free_nullsafe(data); + free_nullsafe(name); + return retnode; } #endif |