[telepathy-gabble/master] muc-channel.c: use node iteration wrappers
Dafydd Harries
daf at rhydd.org
Mon Jun 29 06:58:32 PDT 2009
---
src/muc-channel.c | 64 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 39 insertions(+), 25 deletions(-)
diff --git a/src/muc-channel.c b/src/muc-channel.c
index 6e1fad9..051a837 100644
--- a/src/muc-channel.c
+++ b/src/muc-channel.c
@@ -439,6 +439,7 @@ properties_disco_cb (GabbleDisco *disco,
LmMessageNode *lm_node;
const gchar *str;
GValue val = { 0, };
+ NodeIter i;
g_assert (GABBLE_IS_MUC_CHANNEL (chan));
@@ -483,13 +484,14 @@ properties_disco_cb (GabbleDisco *disco,
}
}
- for (lm_node = query_result->children; lm_node; lm_node = lm_node->next)
+ for (i = node_iter (query_result); i; i = node_iter_next (i))
{
guint prop_id = INVALID_ROOM_PROP;
+ LmMessageNode *child = node_iter_data (i);
- if (strcmp (lm_node->name, "feature") == 0)
+ if (strcmp (child->name, "feature") == 0)
{
- str = lm_message_node_get_attribute (lm_node, "var");
+ str = lm_message_node_get_attribute (child, "var");
if (str == NULL)
continue;
@@ -590,14 +592,17 @@ properties_disco_cb (GabbleDisco *disco,
DEBUG ("unhandled feature '%s'", str);
}
}
- else if (strcmp (lm_node->name, "x") == 0)
+ else if (strcmp (child->name, "x") == 0)
{
- if (lm_message_node_has_namespace (lm_node, NS_X_DATA, NULL))
+ if (lm_message_node_has_namespace (child, NS_X_DATA, NULL))
{
- LmMessageNode *field, *value_node;
+ NodeIter j;
- for (field = lm_node->children; field; field = field->next)
+ for (j = node_iter (child); j; j = node_iter_next (j))
{
+ LmMessageNode *field = node_iter_data (j);
+ LmMessageNode *value_node;
+
if (strcmp (field->name, "field") != 0)
continue;
@@ -1629,6 +1634,7 @@ static LmMessageNode *
config_form_get_form_node (LmMessage *msg)
{
LmMessageNode *node;
+ NodeIter i;
/* find the query node */
node = lm_message_node_get_child (msg->node, "query");
@@ -1636,24 +1642,26 @@ config_form_get_form_node (LmMessage *msg)
return NULL;
/* then the form node */
- for (node = node->children; node; node = node->next)
+ for (i = node_iter (node); i; i = node_iter_next (i))
{
- if (tp_strdiff (node->name, "x"))
+ LmMessageNode *child = node_iter_data (i);
+
+ if (tp_strdiff (child->name, "x"))
{
continue;
}
- if (!lm_message_node_has_namespace (node, NS_X_DATA, NULL))
+ if (!lm_message_node_has_namespace (child, NS_X_DATA, NULL))
{
continue;
}
- if (tp_strdiff (lm_message_node_get_attribute (node, "type"), "form"))
+ if (tp_strdiff (lm_message_node_get_attribute (child, "type"), "form"))
{
continue;
}
- return node;
+ return child;
}
return NULL;
@@ -1666,7 +1674,8 @@ perms_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
{
GabbleMucChannel *chan = GABBLE_MUC_CHANNEL (object);
GabbleMucChannelPrivate *priv = GABBLE_MUC_CHANNEL_GET_PRIVATE (chan);
- LmMessageNode *form_node, *node;
+ LmMessageNode *form_node;
+ NodeIter i;
if (lm_message_get_sub_type (reply_msg) != LM_MESSAGE_SUB_TYPE_RESULT)
{
@@ -1686,9 +1695,10 @@ perms_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
goto OUT;
}
- for (node = form_node->children; node; node = node->next)
+ for (i = node_iter (form_node); i; i = node_iter_next (i))
{
const gchar *var;
+ LmMessageNode *node = node_iter_data (i);
if (strcmp (node->name, "field") != 0)
continue;
@@ -1943,12 +1953,13 @@ handle_unavailable_presence_update (GabbleMucChannel *chan,
static gboolean
renamed_by_server (LmMessageNode *x_node)
{
- LmMessageNode *child;
gboolean is_self = FALSE;
gboolean renamed = FALSE;
+ NodeIter i;
- for (child = x_node->children; child != NULL; child = child->next)
+ for (i = node_iter (x_node); i; i = node_iter_next (i))
{
+ LmMessageNode *child = node_iter_data (i);
const gchar *code;
if (strcmp (child->name, "status") != 0)
@@ -2951,6 +2962,7 @@ request_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
LmMessage *msg = NULL;
LmMessageNode *submit_node, *form_node, *node;
guint i, props_left;
+ NodeIter j;
if (lm_message_get_sub_type (reply_msg) != LM_MESSAGE_SUB_TYPE_RESULT)
{
@@ -2994,26 +3006,27 @@ request_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
props_left |= 1 << i;
}
- for (node = form_node->children; node; node = node->next)
+ for (j = node_iter (form_node); j; j = node_iter_next (j))
{
const gchar *var;
LmMessageNode *field_node;
+ LmMessageNode *child = node_iter_data (j);
guint id;
GType type;
gboolean invert;
const gchar *val_str = NULL, *type_str;
gboolean val_bool;
- if (strcmp (node->name, "field") != 0)
+ if (strcmp (child->name, "field") != 0)
{
- DEBUG ("skipping node '%s'", node->name);
+ DEBUG ("skipping node '%s'", child->name);
continue;
}
- var = lm_message_node_get_attribute (node, "var");
+ var = lm_message_node_get_attribute (child, "var");
if (var == NULL) {
DEBUG ("skipping node '%s' because of lacking var attribute",
- node->name);
+ child->name);
continue;
}
@@ -3112,7 +3125,7 @@ request_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
field_node = lm_message_node_add_child (submit_node, "field", NULL);
lm_message_node_set_attribute (field_node, "var", var);
- type_str = lm_message_node_get_attribute (node, "type");
+ type_str = lm_message_node_get_attribute (child, "type");
if (type_str)
{
lm_message_node_set_attribute (field_node, "type", type_str);
@@ -3155,11 +3168,12 @@ request_config_form_reply_cb (GabbleConnection *conn, LmMessage *sent_msg,
else
{
/* Copy all the <value> nodes */
- LmMessageNode *value_node;
+ NodeIter k;
- for (value_node = node->children; value_node != NULL;
- value_node = value_node->next)
+ for (k = node_iter (child); k; k = node_iter_next (k))
{
+ LmMessageNode *value_node = node_iter_data (k);
+
if (tp_strdiff (value_node->name, "value"))
/* Not a value, skip it */
continue;
--
1.5.6.5
More information about the telepathy-commits
mailing list