libpurple/protocols/gg/xml.c

branch
soc.2012.gg
changeset 33343
09f740724036
parent 33315
42bbe5b85df8
child 33348
2394cd23ce8f
equal deleted inserted replaced
33342:26ba5e4e8c24 33343:09f740724036
10 g_return_val_if_fail(var != NULL, FALSE); 10 g_return_val_if_fail(var != NULL, FALSE);
11 11
12 if (childName != NULL) 12 if (childName != NULL)
13 { 13 {
14 xml = xmlnode_get_child(xml, childName); 14 xml = xmlnode_get_child(xml, childName);
15 g_return_val_if_fail(xml != NULL, FALSE); 15 if (xml == NULL)
16 return FALSE;
16 } 17 }
17 18
18 str = xmlnode_get_data(xml); 19 str = xmlnode_get_data(xml);
19 g_return_val_if_fail(str != NULL, FALSE); 20 if (str == NULL)
21 return FALSE;
20 22
21 *var = str; 23 *var = str;
22 return TRUE; 24 return TRUE;
23 } 25 }
24 26
26 { 28 {
27 char *str; 29 char *str;
28 gboolean succ; 30 gboolean succ;
29 31
30 succ = ggp_xml_get_string(xml, childName, &str); 32 succ = ggp_xml_get_string(xml, childName, &str);
31 g_return_val_if_fail(succ, FALSE); 33 if (!succ)
34 return FALSE;
32 35
33 *var = (strcmp(str, "true") == 0 || 36 *var = (strcmp(str, "true") == 0 ||
34 strcmp(str, "True") == 0 || 37 strcmp(str, "True") == 0 ||
35 strcmp(str, "TRUE") == 0 || 38 strcmp(str, "TRUE") == 0 ||
36 strcmp(str, "1") == 0); 39 strcmp(str, "1") == 0);
44 char *str, *endptr; 47 char *str, *endptr;
45 gboolean succ; 48 gboolean succ;
46 unsigned int val; 49 unsigned int val;
47 50
48 succ = ggp_xml_get_string(xml, childName, &str); 51 succ = ggp_xml_get_string(xml, childName, &str);
49 g_return_val_if_fail(succ, FALSE); 52 if (!succ)
53 return FALSE;
50 54
51 errno = 0; 55 errno = 0;
52 val = strtoul(str, &endptr, 10); 56 val = strtoul(str, &endptr, 10);
53 57
54 succ = (errno != ERANGE && endptr[0] == '\0'); 58 succ = (errno != ERANGE && endptr[0] == '\0');
99 if (child->type != XMLNODE_TYPE_ATTRIB) 103 if (child->type != XMLNODE_TYPE_ATTRIB)
100 xmlnode_free(child); 104 xmlnode_free(child);
101 child = next; 105 child = next;
102 } 106 }
103 } 107 }
108
109 unsigned int ggp_xml_child_count(xmlnode *xml, const gchar *childName)
110 {
111 xmlnode *child;
112 unsigned int count = 0;
113
114 g_return_val_if_fail(xml != NULL, 0);
115
116 if (childName)
117 {
118 child = xmlnode_get_child(xml, childName);
119 while (child)
120 {
121 child = xmlnode_get_next_twin(child);
122 count++;
123 }
124 }
125 else
126 {
127 child = xml->child;
128 while (child)
129 {
130 child = child->next;
131 count++;
132 }
133 }
134
135 return count;
136 }

mercurial