]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: add qemu caps constructor which takes binary name
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 20 Dec 2019 12:28:57 +0000 (12:28 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Mon, 23 Dec 2019 16:39:36 +0000 (16:39 +0000)
Simplify repeated code patterns by providing a new constructor taking
the QEMU binary name.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h

index cc6d9bbd44ad44c5a521ed96f2f91c705cdc131c..2ab7ead92ea208f4bc5cf83761f6d78b6460097d 100644 (file)
@@ -1649,6 +1649,17 @@ virQEMUCapsNew(void)
 }
 
 
+virQEMUCapsPtr
+virQEMUCapsNewBinary(const char *binary)
+{
+    virQEMUCapsPtr qemuCaps = virQEMUCapsNew();
+
+    qemuCaps->binary = g_strdup(binary);
+
+    return qemuCaps;
+}
+
+
 void
 virQEMUCapsSetInvalidation(virQEMUCapsPtr qemuCaps,
                            bool enabled)
@@ -1750,7 +1761,7 @@ virQEMUCapsAccelCopy(virQEMUCapsAccelPtr dst,
 
 virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps)
 {
-    virQEMUCapsPtr ret = virQEMUCapsNew();
+    virQEMUCapsPtr ret = virQEMUCapsNewBinary(qemuCaps->binary);
     size_t i;
 
     if (!ret)
@@ -1760,8 +1771,6 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps)
     ret->usedQMP = qemuCaps->usedQMP;
     ret->kvmSupportsNesting = qemuCaps->kvmSupportsNesting;
 
-    ret->binary = g_strdup(qemuCaps->binary);
-
     ret->ctime = qemuCaps->ctime;
 
     virBitmapCopy(ret->flags, qemuCaps->flags);
@@ -4950,11 +4959,9 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
     virQEMUCapsPtr qemuCaps;
     struct stat sb;
 
-    if (!(qemuCaps = virQEMUCapsNew()))
+    if (!(qemuCaps = virQEMUCapsNewBinary(binary)))
         goto error;
 
-    qemuCaps->binary = g_strdup(binary);
-
     /* We would also want to check faccessat if we cared about ACLs,
      * but we don't.  */
     if (stat(binary, &sb) < 0) {
@@ -5021,14 +5028,12 @@ virQEMUCapsLoadFile(const char *filename,
                     const char *binary,
                     void *privData)
 {
-    virQEMUCapsPtr qemuCaps = virQEMUCapsNew();
+    virQEMUCapsPtr qemuCaps = virQEMUCapsNewBinary(binary);
     virQEMUCapsCachePrivPtr priv = privData;
 
     if (!qemuCaps)
         return NULL;
 
-    qemuCaps->binary = g_strdup(binary);
-
     if (virQEMUCapsLoadCache(priv->hostArch, qemuCaps, filename) < 0)
         goto error;
 
index 1b2522126c0db8ebf13c5e268914cfaa6172c088..193c19fc81d71fae8b830a7e457d9e9ed3618fbf 100644 (file)
@@ -544,6 +544,7 @@ typedef virQEMUCaps *virQEMUCapsPtr;
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUCaps, virObjectUnref);
 
 virQEMUCapsPtr virQEMUCapsNew(void);
+virQEMUCapsPtr virQEMUCapsNewBinary(const char *binary);
 
 void virQEMUCapsSet(virQEMUCapsPtr qemuCaps,
                     virQEMUCapsFlags flag) ATTRIBUTE_NONNULL(1);