[PATCH 09/13] virsh: cmdChangeMedia: Refactor cleanup

Peter Krempa pkrempa at redhat.com
Fri Dec 2 14:16:53 UTC 2022


Use automatic pointer freeing for the 'disk_node' variable and remove
the 'cleanup' label and 'ret' variable.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 tools/virsh-domain.c | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 56490124a0..c4cf7aa95e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -13089,9 +13089,8 @@ cmdChangeMedia(vshControl *ctl, const vshCmd *cmd)
     const char *source = NULL;
     const char *path = NULL;
     g_autofree char *doc = NULL;
-    xmlNodePtr disk_node = NULL;
+    g_autoptr(xmlNode) disk_node = NULL;
     g_autofree char *disk_xml = NULL;
-    bool ret = false;
     virshUpdateDiskXMLType update_type;
     const char *action = NULL;
     const char *success_msg = NULL;
@@ -13152,38 +13151,34 @@ cmdChangeMedia(vshControl *ctl, const vshCmd *cmd)
         return false;

     if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0)
-        goto cleanup;
+        return false;

     if (flags & VIR_DOMAIN_AFFECT_CONFIG)
         doc = virDomainGetXMLDesc(dom, VIR_DOMAIN_XML_INACTIVE);
     else
         doc = virDomainGetXMLDesc(dom, 0);
     if (!doc)
-        goto cleanup;
+        return false;

     if (!(disk_node = virshFindDisk(doc, path, VIRSH_FIND_DISK_CHANGEABLE)))
-        goto cleanup;
+        return false;

     if (!(disk_xml = virshUpdateDiskXML(disk_node, source, block, path,
                                         update_type)))
-        goto cleanup;
+        return false;

     if (vshCommandOptBool(cmd, "print-xml")) {
         vshPrint(ctl, "%s", disk_xml);
-    } else {
-        if (virDomainUpdateDeviceFlags(dom, disk_xml, flags) != 0) {
-            vshError(ctl, _("Failed to complete action %s on media"), action);
-            goto cleanup;
-        }
-
-        vshPrint(ctl, "%s", success_msg);
+        return true;
     }

-    ret = true;
+    if (virDomainUpdateDeviceFlags(dom, disk_xml, flags) != 0) {
+        vshError(ctl, _("Failed to complete action %s on media"), action);
+        return false;
+    }

- cleanup:
-    xmlFreeNode(disk_node);
-    return ret;
+    vshPrint(ctl, "%s", success_msg);
+    return true;
 }

 static const vshCmdInfo info_domfstrim[] = {
-- 
2.38.1



More information about the libvir-list mailing list