}
+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,
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;
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__*/