diff options
author | Peter Krempa <pkrempa@redhat.com> | 2022-10-19 13:21:23 +0200 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2022-12-02 16:49:25 +0100 |
commit | da31579d0b1fb1bbeb9c475a64c52dcc477cbfbd (patch) | |
tree | d95fd1a06f4d80ce823ae6bd140a9db58269d56c /tools | |
parent | 3dd4971e299a0e6637061b4588942f8905cda507 (diff) | |
download | libvirt-da31579d0b1fb1bbeb9c475a64c52dcc477cbfbd.tar.gz |
virshFindDisk: Use virXPathNodeSet instead of xmlXPathEval
Don't open-code the XPath lookup.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/virsh-domain.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 2386672aa6..3c6d0984c9 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -12639,8 +12639,9 @@ virshFindDisk(const char *doc, int type) { g_autoptr(xmlDoc) xml = NULL; - g_autoptr(xmlXPathObject) obj = NULL; g_autoptr(xmlXPathContext) ctxt = NULL; + g_autofree xmlNodePtr *nodes = NULL; + ssize_t nnodes; xmlNodePtr cur = NULL; size_t i; @@ -12650,21 +12651,17 @@ virshFindDisk(const char *doc, return NULL; } - obj = xmlXPathEval(BAD_CAST "/domain/devices/disk", ctxt); - if (obj == NULL || - obj->type != XPATH_NODESET || - obj->nodesetval == NULL || - obj->nodesetval->nodeNr == 0) { + if ((nnodes = virXPathNodeSet("/domain/devices/disk", ctxt, &nodes)) <= 0) { vshError(NULL, "%s", _("Failed to get disk information")); return NULL; } /* search disk using @path */ - for (i = 0; i < obj->nodesetval->nodeNr; i++) { + for (i = 0; i < nnodes; i++) { bool is_supported = true; if (type == VIRSH_FIND_DISK_CHANGEABLE) { - xmlNodePtr n = obj->nodesetval->nodeTab[i]; + xmlNodePtr n = nodes[i]; is_supported = false; /* Check if the disk is CDROM or floppy disk */ @@ -12680,7 +12677,7 @@ virshFindDisk(const char *doc, continue; } - cur = obj->nodesetval->nodeTab[i]->children; + cur = nodes[i]->children; while (cur != NULL) { if (cur->type == XML_ELEMENT_NODE) { g_autofree char *tmp = NULL; @@ -12696,7 +12693,7 @@ virshFindDisk(const char *doc, } if (STREQ_NULLABLE(tmp, path)) { - xmlNodePtr ret = xmlCopyNode(obj->nodesetval->nodeTab[i], 1); + xmlNodePtr ret = xmlCopyNode(nodes[i], 1); /* drop backing store since they are not needed here */ virshDiskDropBackingStore(ret); return ret; |