
On Thu, Jan 13, 2022 at 03:11:51PM +0530, Ani Sinha wrote:
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index d822533ccb..4130df0ed9 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10718,6 +10718,8 @@ qemuBuildSerialChrDeviceProps(const virDomainDef *def, g_autoptr(virJSONValue) props = NULL; g_autofree char *chardev = g_strdup_printf("char%s", serial->info.alias); virQEMUCapsFlags caps; + const char *typestr; + int ret;
type should match the return type of this function.
It does match return type of virDomainChrSerialTargetModelTypeToString(): 47 #define VIR_ENUM_DECL(name) \ 48 const char *name ## TypeToString(int type); \
ret should be defined as virJSONValue.
"int" is correct: 358 int 359 virJSONValueObjectAdd(virJSONValue **objptr, ...)
I preferred your previous style to this one.
Below is cleaner IMO: we don't repeat code, and the flow is much clearer.
switch ((virDomainChrSerialTargetModel) serial->targetModel) { case VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL: @@ -10750,11 +10752,24 @@ qemuBuildSerialChrDeviceProps(const virDomainDef *def, return NULL; }
- if (virJSONValueObjectAdd(&props, - "s:driver", virDomainChrSerialTargetModelTypeToString(serial->targetModel), - "s:chardev", chardev, - "s:id", serial->info.alias, - NULL) < 0) + typestr = virDomainChrSerialTargetModelTypeToString(serial->targetModel); + + if (serial->targetModel == VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL) { + ret = virJSONValueObjectAdd(&props, + "s:driver", typestr, + "s:chardev", chardev, + "s:id", serial->info.alias, + "k:index", serial->target.port, + NULL); + } else { + ret = virJSONValueObjectAdd(&props, + "s:driver", typestr, + "s:chardev", chardev, + "s:id", serial->info.alias, + NULL); + } + + if (ret < 0) return NULL;
regards john