From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Eduardo Lima (Etrunko)" Date: Fri, 19 May 2017 00:31:46 -0300 Subject: [PATCH] utils: Rename ovirt_rest_xml_node_get_content_va() to ovirt_rest_xml_node_find() It is more useful to make this function retrieve a sub node and let the caller do what it wants with that node, instead of returning the content directly. Signed-off-by: Eduardo Lima (Etrunko) --- govirt/ovirt-utils.c | 59 +++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/govirt/ovirt-utils.c b/govirt/ovirt-utils.c index 951c693..c0541e9 100644 --- a/govirt/ovirt-utils.c +++ b/govirt/ovirt-utils.c @@ -50,45 +50,38 @@ ovirt_rest_xml_node_from_call(RestProxyCall *call) return node; } -static const char * -ovirt_rest_xml_node_get_content_va(RestXmlNode *node, - va_list *args, - GStrv str_array) -{ - g_return_val_if_fail((args != NULL) || (str_array != NULL), NULL); - - while (TRUE) { - const char *node_name; - - if (args != NULL) { - node_name = va_arg(*args, const char *); - } else { - node_name = *str_array; - str_array++; - } - if (node_name == NULL) - break; - node = rest_xml_node_find(node, node_name); - if (node == NULL) { - g_debug("could not find XML node '%s'", node_name); - return NULL; - } - } - - return node->content; -} - -static const char * -ovirt_rest_xml_node_get_content_from_path(RestXmlNode *node, const char *path) +static RestXmlNode * +ovirt_rest_xml_node_find(RestXmlNode *node, const char *path) { + guint i; GStrv pathv; - const char *content; + + g_return_val_if_fail((path != NULL), NULL); pathv = g_strsplit(path, "/", -1); - content = ovirt_rest_xml_node_get_content_va(node, NULL, pathv); + + for (i = 0; i < g_strv_length(pathv); ++i) { + node = rest_xml_node_find(node, pathv[i]); + if (node == NULL) { + g_debug("could not find XML node '%s'", pathv[i]); + break; + } + } + g_strfreev(pathv); - return content; + return node; +} + +static const char * +ovirt_rest_xml_node_get_content_from_path(RestXmlNode *node, const char *path) +{ + node = ovirt_rest_xml_node_find(node, path); + + if (node == NULL) + return NULL; + + return node->content; } static gboolean