| |
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 } |