virDomainDiskDefPtr disk)
{
virBuffer childBuf = VIR_BUFFER_INITIALIZER;
- int ret = -1;
virBufferSetChildIndent(&childBuf, buf);
FORMAT_IOTUNE(read_iops_sec_max_length);
FORMAT_IOTUNE(write_iops_sec_max_length);
- ret = virXMLFormatElement(buf, "iotune", NULL, &childBuf);
-
- virBufferFreeAndReset(&childBuf);
- return ret;
+ return virXMLFormatElement(buf, "iotune", NULL, &childBuf);
}
#undef FORMAT_IOTUNE
virDomainDiskDefPtr disk)
{
virBuffer driverBuf = VIR_BUFFER_INITIALIZER;
- int ret = -1;
virBufferEscapeString(&driverBuf, " name='%s'", virDomainDiskGetDriver(disk));
virDomainVirtioOptionsFormat(&driverBuf, disk->virtio);
- ret = virXMLFormatElement(buf, "driver", &driverBuf, NULL);
-
- virBufferFreeAndReset(&driverBuf);
- return ret;
+ return virXMLFormatElement(buf, "driver", &driverBuf, NULL);
}
{
virBuffer attrBuf = VIR_BUFFER_INITIALIZER;
bool bj = qemuDomainHasBlockjob(vm, false);
- int ret;
virBufferAsprintf(&attrBuf, " active='%s'",
virTristateBoolTypeToString(virTristateBoolFromBool(bj)));
- ret = virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL);
- virBufferFreeAndReset(&attrBuf);
- return ret;
+ return virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL);
}
* @childBuf are NULL or are empty buffers the element is not
* formatted.
*
+ * Both passed buffers are always consumed and freed.
+ *
* Returns 0 on success, -1 on error.
*/
int
virBufferPtr attrBuf,
virBufferPtr childBuf)
{
+ int ret = -1;
+
if ((!attrBuf || virBufferUse(attrBuf) == 0) &&
(!childBuf || virBufferUse(childBuf) == 0)) {
return 0;
}
if ((attrBuf && virBufferCheckError(attrBuf) < 0) ||
- (childBuf && virBufferCheckError(childBuf) < 0)) {
- return -1;
- }
+ (childBuf && virBufferCheckError(childBuf) < 0))
+ goto cleanup;
virBufferAsprintf(buf, "<%s", name);
virBufferAddLit(buf, "/>\n");
}
- return 0;
+ ret = 0;
+
+ cleanup:
+ virBufferFreeAndReset(attrBuf);
+ virBufferFreeAndReset(childBuf);
+ return ret;
}