}
-static void ATTRIBUTE_NONNULL(2)
+static int ATTRIBUTE_NONNULL(2)
virDomainDeviceInfoFormat(virBufferPtr buf,
virDomainDeviceInfoPtr info,
unsigned int flags)
{
virBuffer attrBuf = VIR_BUFFER_INITIALIZER;
virBuffer childBuf = VIR_BUFFER_INITIALIZER;
+ int ret = -1;
if ((flags & VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) && info->bootIndex) {
virBufferAsprintf(buf, "<boot order='%u'", info->bootIndex);
}
if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE ||
- info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390)
- return;
+ info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390) {
+ /* We're done here */
+ ret = 0;
+ goto cleanup;
+ }
virBufferAsprintf(&attrBuf, " type='%s'",
virDomainDeviceAddressTypeToString(info->type));
break;
}
- virXMLFormatElement(buf, "address", &attrBuf, &childBuf);
+ if (virXMLFormatElement(buf, "address", &attrBuf, &childBuf) < 0)
+ goto cleanup;
+
+ ret = 0;
+ cleanup:
virBufferFreeAndReset(&attrBuf);
virBufferFreeAndReset(&childBuf);
+
+ return ret;
}
static int
if (def->src->encryption && !def->src->encryptionInherited &&
virStorageEncryptionFormat(buf, def->src->encryption) < 0)
return -1;
- virDomainDeviceInfoFormat(buf, &def->info,
- flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT);
+ if (virDomainDeviceInfoFormat(buf, &def->info,
+ flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) < 0) {
+ return -1;
+ }
if (virDomainDiskDefFormatPrivateData(buf, def, flags, xmlopt) < 0)
return -1;
virDomainControllerDriverFormat(&childBuf, def);
- virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childBuf, &def->info, flags) < 0)
+ goto cleanup;
if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI &&
def->opts.pciopts.pcihole64) {
if (def->readonly)
virBufferAddLit(buf, "<readonly/>\n");
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ goto cleanup;
if (def->space_hard_limit)
virBufferAsprintf(buf, "<space_hard_limit unit='bytes'>"
virDomainNetDefCoalesceFormatXML(buf, def->coalesce);
- virDomainDeviceInfoFormat(buf, &def->info,
- flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT
- | VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM);
+ if (virDomainDeviceInfoFormat(buf, &def->info,
+ flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT
+ | VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM) < 0) {
+ return -1;
+ }
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</interface>\n");
if (virDomainChrTargetDefFormat(buf, def, flags) < 0)
return -1;
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ return -1;
virBufferAdjustIndent(buf, -2);
virBufferAsprintf(buf, "</%s>\n", elementName);
_("unexpected smartcard type %d"), def->type);
goto cleanup;
}
- virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childBuf, &def->info, flags) < 0)
+ goto cleanup;
if (virBufferCheckError(&childBuf) < 0)
goto cleanup;
break;
}
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ return -1;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</tpm>\n");
for (i = 0; i < def->ncodecs; i++)
virDomainSoundCodecDefFormat(&childBuf, def->codecs[i]);
- virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childBuf, &def->info, flags) < 0)
+ goto cleanup;
if (virBufferCheckError(&childBuf) < 0)
goto cleanup;
if (def->period)
virBufferAsprintf(&childrenBuf, "<stats period='%i'/>\n", def->period);
- virDomainDeviceInfoFormat(&childrenBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childrenBuf, &def->info, flags) < 0)
+ goto cleanup;
if (def->virtio) {
virBuffer driverBuf = VIR_BUFFER_INITIALIZER;
{
virBufferAddLit(buf, "<nvram>\n");
virBufferAdjustIndent(buf, 2);
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ return -1;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</nvram>\n");
goto cleanup;
}
- virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childBuf, &def->info, flags) < 0)
+ goto cleanup;
if (virBufferCheckError(&childBuf) < 0)
goto cleanup;
virDomainPanicModelTypeToString(def->model));
virBufferSetChildIndent(&childrenBuf, buf);
- virDomainDeviceInfoFormat(&childrenBuf, &def->info, 0);
+ if (virDomainDeviceInfoFormat(&childrenBuf, &def->info, 0) < 0)
+ goto cleanup;
if (virBufferCheckError(&childrenBuf) < 0)
goto cleanup;
virBufferAddLit(buf, "/>\n");
}
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ return -1;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</shmem>\n");
virBufferAddLit(buf, "/>\n");
}
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ goto cleanup;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</rng>\n");
virDomainMemoryTargetDefFormat(buf, def);
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ return -1;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</memory>\n");
virBufferAddLit(buf, "/>\n");
}
- virDomainDeviceInfoFormat(buf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
+ goto cleanup;
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</video>\n");
virBufferAddLit(&childbuf, "/>\n");
}
virBufferEscapeString(&childbuf, "<source evdev='%s'/>\n", def->source.evdev);
- virDomainDeviceInfoFormat(&childbuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childbuf, &def->info, flags) < 0)
+ goto cleanup;
if (virBufferCheckError(&childbuf) < 0)
goto cleanup;
if (def->shareable)
virBufferAddLit(buf, "<shareable/>\n");
- virDomainDeviceInfoFormat(buf, def->info,
- flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT
- | VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM);
+ if (virDomainDeviceInfoFormat(buf, def->info,
+ flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT
+ | VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM) < 0) {
+ return -1;
+ }
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</hostdev>\n");
if (virDomainChrSourceDefFormat(buf, def->source, flags) < 0)
return -1;
- virDomainDeviceInfoFormat(buf, &def->info,
- flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT);
+ if (virDomainDeviceInfoFormat(buf, &def->info,
+ flags | VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT) < 0) {
+ return -1;
+ }
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</redirdev>\n");
return 0;
goto cleanup;
}
- virDomainDeviceInfoFormat(&childBuf, &def->info, flags);
+ if (virDomainDeviceInfoFormat(&childBuf, &def->info, flags) < 0)
+ goto cleanup;
if (virBufferCheckError(&childBuf) < 0)
goto cleanup;
if (virXMLFormatElement(&childBuf, "cid", &cidAttrBuf, NULL) < 0)
goto cleanup;
- virDomainDeviceInfoFormat(&childBuf, &vsock->info, 0);
+ if (virDomainDeviceInfoFormat(&childBuf, &vsock->info, 0) < 0)
+ goto cleanup;
if (virXMLFormatElement(buf, "vsock", &attrBuf, &childBuf) < 0)
goto cleanup;