libpurple/protocols/gg/xml.c

branch
soc.2012.gg
changeset 33314
57013b9e1a8e
child 33315
42bbe5b85df8
equal deleted inserted replaced
33313:5a0c6582d5b1 33314:57013b9e1a8e
1 #include "xml.h"
2
3 gboolean ggp_xml_get_string(const xmlnode *xml, gchar *childName, gchar **var)
4 {
5 char *str;
6
7 g_return_val_if_fail(xml != NULL, FALSE);
8 g_return_val_if_fail(var != NULL, FALSE);
9
10 if (childName != NULL)
11 {
12 xml = xmlnode_get_child(xml, childName);
13 g_return_val_if_fail(xml != NULL, FALSE);
14 }
15
16 str = xmlnode_get_data(xml);
17 g_return_val_if_fail(str != NULL, FALSE);
18
19 *var = str;
20 return TRUE;
21 }
22
23 gboolean ggp_xml_get_bool(const xmlnode *xml, gchar *childName, gboolean *var)
24 {
25 char *str;
26 gboolean succ;
27
28 succ = ggp_xml_get_string(xml, childName, &str);
29 g_return_val_if_fail(succ, FALSE);
30
31 *var = (strcmp(str, "true") == 0 ||
32 strcmp(str, "True") == 0 ||
33 strcmp(str, "TRUE") == 0 ||
34 strcmp(str, "1") == 0);
35 g_free(str);
36
37 return TRUE;
38 }
39
40 gboolean ggp_xml_get_uint(const xmlnode *xml, gchar *childName, unsigned int *var)
41 {
42 char *str, *endptr;
43 gboolean succ;
44 unsigned int val;
45
46 succ = ggp_xml_get_string(xml, childName, &str);
47 g_return_val_if_fail(succ, FALSE);
48
49 errno = 0;
50 val = strtoul(str, &endptr, 10);
51
52 succ = (errno != ERANGE && endptr[0] == '\0');
53 g_free(str);
54
55 if (succ)
56 *var = val;
57 return succ;
58 }

mercurial