]> xenbits.xensource.com Git - libvirt.git/commitdiff
Introduce qemuBuildInputDevStr
authorJán Tomko <jtomko@redhat.com>
Wed, 4 Oct 2017 09:34:31 +0000 (11:34 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 19 Oct 2017 12:43:22 +0000 (14:43 +0200)
A function that builds the -device string for input devices.

src/qemu/qemu_command.c
src/qemu/qemu_command.h

index b85484a7c5b2f1dbd52d47a528ffdfe5af623c35..40d9eeffd219ec3e68c19490036ee7abd751998b 100644 (file)
@@ -4325,6 +4325,27 @@ qemuBuildUSBInputDevStr(const virDomainDef *def,
 }
 
 
+int
+qemuBuildInputDevStr(char **devstr,
+                     const virDomainDef *def,
+                     virDomainInputDefPtr input,
+                     virQEMUCapsPtr qemuCaps)
+{
+    switch (input->bus) {
+    case VIR_DOMAIN_INPUT_BUS_USB:
+        if (!(*devstr = qemuBuildUSBInputDevStr(def, input, qemuCaps)))
+            return -1;
+        break;
+
+    case VIR_DOMAIN_INPUT_BUS_VIRTIO:
+        if (!(*devstr = qemuBuildVirtioInputDevStr(def, input, qemuCaps)))
+            return -1;
+        break;
+    }
+    return 0;
+}
+
+
 static int
 qemuBuildInputCommandLine(virCommandPtr cmd,
                           const virDomainDef *def,
@@ -4334,22 +4355,17 @@ qemuBuildInputCommandLine(virCommandPtr cmd,
 
     for (i = 0; i < def->ninputs; i++) {
         virDomainInputDefPtr input = def->inputs[i];
+        char *devstr = NULL;
 
-        if (input->bus == VIR_DOMAIN_INPUT_BUS_USB) {
-            char *optstr;
-            virCommandAddArg(cmd, "-device");
-            if (!(optstr = qemuBuildUSBInputDevStr(def, input, qemuCaps)))
-                return -1;
-            virCommandAddArg(cmd, optstr);
-            VIR_FREE(optstr);
-        } else if (input->bus == VIR_DOMAIN_INPUT_BUS_VIRTIO) {
-            char *optstr;
+        if (qemuBuildInputDevStr(&devstr, def, input, qemuCaps) < 0)
+            return -1;
+
+        if (devstr) {
             virCommandAddArg(cmd, "-device");
-            if (!(optstr = qemuBuildVirtioInputDevStr(def, input, qemuCaps)))
-                return -1;
-            virCommandAddArg(cmd, optstr);
-            VIR_FREE(optstr);
+            virCommandAddArg(cmd, devstr);
         }
+
+        VIR_FREE(devstr);
     }
 
     return 0;
index 48ee502aa71d04ddfda63f9c1681b8360baedcd9..dd01a42a4093b4735c746198d4d895254dfd6a9b 100644 (file)
@@ -197,4 +197,11 @@ char *qemuBuildWatchdogDevStr(const virDomainDef *def,
                               virDomainWatchdogDefPtr dev,
                               virQEMUCapsPtr qemuCaps);
 
+int qemuBuildInputDevStr(char **devstr,
+                         const virDomainDef *def,
+                         virDomainInputDefPtr input,
+                         virQEMUCapsPtr qemuCaps)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
+    ATTRIBUTE_NONNULL(4);
+
 #endif /* __QEMU_COMMAND_H__*/