first try to journal_store_get_latest_id() for sqlite
[k8lowj.git] / src / jam_xml.c
blob4e2d8099e90f4efb2474f4145740820fbf69f5b2
1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
3 */
4 #include <libxml/tree.h>
6 #include "jam_xml.h"
9 char *jam_xmlGetString (xmlDocPtr doc, xmlNodePtr node) {
10 /* we can't guarantee that xmlFree and g_free do the same thing,
11 * so we must copy this string into a glib-allocated string. */
12 xmlChar *str = xmlNodeListGetString(doc, node->xmlChildrenNode, TRUE);
13 char *ret = g_strdup((char *)str);
14 xmlFree(str);
15 return ret;
19 guint32 jam_xmlGetUInt32 (xmlDocPtr doc, xmlNodePtr node) {
20 guint32 ret = 0;
21 xmlChar *value = xmlNodeListGetString(doc, node->xmlChildrenNode, TRUE);
22 if (value) {
23 ret = atol((char *)value);
24 xmlFree(value);
26 return ret;
30 gboolean jam_xmlGetInt (xmlDocPtr doc, xmlNodePtr node, int *ret) {
31 xmlChar *value = xmlNodeListGetString(doc, node->xmlChildrenNode, TRUE);
32 if (value) {
33 *ret = atoi((char *)value);
34 xmlFree(value);
35 return TRUE;
37 return FALSE;
41 xmlNodePtr jam_xmlAddInt (xmlNodePtr node, char *name, int val) {
42 char buf[20];
43 sprintf(buf, "%d", val);
44 return xmlNewTextChild(node, NULL, BAD_CAST name, BAD_CAST buf);
48 void jam_xmlNewDoc (xmlDocPtr *doc, xmlNodePtr *node, char *name) {
49 *doc = xmlNewDoc(BAD_CAST "1.0");
50 *node = xmlNewDocNode(*doc, NULL, BAD_CAST name, NULL);
51 xmlDocSetRootElement(*doc, *node);
55 void jam_xmlSetIntProp (xmlNodePtr node, const char *name, int value) {
56 char buf[20];
57 g_snprintf(buf, 20, "%d", value);
58 xmlSetProp(node, BAD_CAST name, BAD_CAST buf);
62 gboolean jam_xmlGetIntProp (xmlNodePtr node, const char *name, int *value) {
63 xmlChar *prop;
64 prop = xmlGetProp(node, BAD_CAST name);
65 if (prop) {
66 *value = atoi((char *)prop);
67 xmlFree(prop);
68 return TRUE;
70 return FALSE;