conf: eliminate hardcoded indentation in node device xml

Completely mechanical changes, but there were a lot of lines so I made
it a separate patch.
This commit is contained in:
Laine Stump 2014-03-06 16:53:02 +02:00
parent 75f0b66c3a
commit f728155f69

View File

@ -1,7 +1,7 @@
/* /*
* node_device_conf.c: config handling for node devices * node_device_conf.c: config handling for node devices
* *
* Copyright (C) 2009-2013 Red Hat, Inc. * Copyright (C) 2009-2014 Red Hat, Inc.
* Copyright (C) 2008 Virtual Iron Software, Inc. * Copyright (C) 2008 Virtual Iron Software, Inc.
* Copyright (C) 2008 David F. Lively * Copyright (C) 2008 David F. Lively
* *
@ -225,70 +225,77 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *def)
size_t i = 0; size_t i = 0;
virBufferAddLit(&buf, "<device>\n"); virBufferAddLit(&buf, "<device>\n");
virBufferEscapeString(&buf, " <name>%s</name>\n", def->name); virBufferAdjustIndent(&buf, 2);
virBufferEscapeString(&buf, " <path>%s</path>\n", def->sysfs_path); virBufferEscapeString(&buf, "<name>%s</name>\n", def->name);
if (def->parent) { virBufferEscapeString(&buf, "<path>%s</path>\n", def->sysfs_path);
virBufferEscapeString(&buf, " <parent>%s</parent>\n", def->parent); if (def->parent)
} virBufferEscapeString(&buf, "<parent>%s</parent>\n", def->parent);
if (def->driver) { if (def->driver) {
virBufferAddLit(&buf, " <driver>\n"); virBufferAddLit(&buf, "<driver>\n");
virBufferEscapeString(&buf, " <name>%s</name>\n", def->driver); virBufferAdjustIndent(&buf, 2);
virBufferAddLit(&buf, " </driver>\n"); virBufferEscapeString(&buf, "<name>%s</name>\n", def->driver);
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</driver>\n");
} }
for (caps = def->caps; caps; caps = caps->next) { for (caps = def->caps; caps; caps = caps->next) {
char uuidstr[VIR_UUID_STRING_BUFLEN]; char uuidstr[VIR_UUID_STRING_BUFLEN];
union _virNodeDevCapData *data = &caps->data; union _virNodeDevCapData *data = &caps->data;
virBufferAsprintf(&buf, " <capability type='%s'>\n", virBufferAsprintf(&buf, "<capability type='%s'>\n",
virNodeDevCapTypeToString(caps->type)); virNodeDevCapTypeToString(caps->type));
virBufferAdjustIndent(&buf, 2);
switch (caps->type) { switch (caps->type) {
case VIR_NODE_DEV_CAP_SYSTEM: case VIR_NODE_DEV_CAP_SYSTEM:
if (data->system.product_name) if (data->system.product_name)
virBufferEscapeString(&buf, " <product>%s</product>\n", virBufferEscapeString(&buf, "<product>%s</product>\n",
data->system.product_name); data->system.product_name);
virBufferAddLit(&buf, " <hardware>\n"); virBufferAddLit(&buf, "<hardware>\n");
virBufferAdjustIndent(&buf, 2);
if (data->system.hardware.vendor_name) if (data->system.hardware.vendor_name)
virBufferEscapeString(&buf, " <vendor>%s</vendor>\n", virBufferEscapeString(&buf, "<vendor>%s</vendor>\n",
data->system.hardware.vendor_name); data->system.hardware.vendor_name);
if (data->system.hardware.version) if (data->system.hardware.version)
virBufferEscapeString(&buf, " <version>%s</version>\n", virBufferEscapeString(&buf, "<version>%s</version>\n",
data->system.hardware.version); data->system.hardware.version);
if (data->system.hardware.serial) if (data->system.hardware.serial)
virBufferEscapeString(&buf, " <serial>%s</serial>\n", virBufferEscapeString(&buf, "<serial>%s</serial>\n",
data->system.hardware.serial); data->system.hardware.serial);
virUUIDFormat(data->system.hardware.uuid, uuidstr); virUUIDFormat(data->system.hardware.uuid, uuidstr);
virBufferAsprintf(&buf, " <uuid>%s</uuid>\n", uuidstr); virBufferAsprintf(&buf, "<uuid>%s</uuid>\n", uuidstr);
virBufferAddLit(&buf, " </hardware>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, " <firmware>\n"); virBufferAddLit(&buf, "</hardware>\n");
virBufferAddLit(&buf, "<firmware>\n");
virBufferAdjustIndent(&buf, 2);
if (data->system.firmware.vendor_name) if (data->system.firmware.vendor_name)
virBufferEscapeString(&buf, " <vendor>%s</vendor>\n", virBufferEscapeString(&buf, "<vendor>%s</vendor>\n",
data->system.firmware.vendor_name); data->system.firmware.vendor_name);
if (data->system.firmware.version) if (data->system.firmware.version)
virBufferEscapeString(&buf, " <version>%s</version>\n", virBufferEscapeString(&buf, "<version>%s</version>\n",
data->system.firmware.version); data->system.firmware.version);
if (data->system.firmware.release_date) if (data->system.firmware.release_date)
virBufferEscapeString(&buf, virBufferEscapeString(&buf, "<release_date>%s</release_date>\n",
" <release_date>%s</release_date>\n",
data->system.firmware.release_date); data->system.firmware.release_date);
virBufferAddLit(&buf, " </firmware>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</firmware>\n");
break; break;
case VIR_NODE_DEV_CAP_PCI_DEV: case VIR_NODE_DEV_CAP_PCI_DEV:
virBufferAsprintf(&buf, " <domain>%d</domain>\n", virBufferAsprintf(&buf, "<domain>%d</domain>\n",
data->pci_dev.domain); data->pci_dev.domain);
virBufferAsprintf(&buf, " <bus>%d</bus>\n", data->pci_dev.bus); virBufferAsprintf(&buf, "<bus>%d</bus>\n", data->pci_dev.bus);
virBufferAsprintf(&buf, " <slot>%d</slot>\n", virBufferAsprintf(&buf, "<slot>%d</slot>\n",
data->pci_dev.slot); data->pci_dev.slot);
virBufferAsprintf(&buf, " <function>%d</function>\n", virBufferAsprintf(&buf, "<function>%d</function>\n",
data->pci_dev.function); data->pci_dev.function);
virBufferAsprintf(&buf, " <product id='0x%04x'", virBufferAsprintf(&buf, "<product id='0x%04x'",
data->pci_dev.product); data->pci_dev.product);
if (data->pci_dev.product_name) if (data->pci_dev.product_name)
virBufferEscapeString(&buf, ">%s</product>\n", virBufferEscapeString(&buf, ">%s</product>\n",
data->pci_dev.product_name); data->pci_dev.product_name);
else else
virBufferAddLit(&buf, " />\n"); virBufferAddLit(&buf, " />\n");
virBufferAsprintf(&buf, " <vendor id='0x%04x'", virBufferAsprintf(&buf, "<vendor id='0x%04x'",
data->pci_dev.vendor); data->pci_dev.vendor);
if (data->pci_dev.vendor_name) if (data->pci_dev.vendor_name)
virBufferEscapeString(&buf, ">%s</vendor>\n", virBufferEscapeString(&buf, ">%s</vendor>\n",
@ -296,56 +303,62 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *def)
else else
virBufferAddLit(&buf, " />\n"); virBufferAddLit(&buf, " />\n");
if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION) { if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_PHYSICAL_FUNCTION) {
virBufferAddLit(&buf, " <capability type='phys_function'>\n"); virBufferAddLit(&buf, "<capability type='phys_function'>\n");
virBufferAdjustIndent(&buf, 2);
virBufferAsprintf(&buf, virBufferAsprintf(&buf,
" <address domain='0x%.4x' bus='0x%.2x' " "<address domain='0x%.4x' bus='0x%.2x' "
"slot='0x%.2x' function='0x%.1x'/>\n", "slot='0x%.2x' function='0x%.1x'/>\n",
data->pci_dev.physical_function->domain, data->pci_dev.physical_function->domain,
data->pci_dev.physical_function->bus, data->pci_dev.physical_function->bus,
data->pci_dev.physical_function->slot, data->pci_dev.physical_function->slot,
data->pci_dev.physical_function->function); data->pci_dev.physical_function->function);
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} }
if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION) { if (data->pci_dev.flags & VIR_NODE_DEV_CAP_FLAG_PCI_VIRTUAL_FUNCTION) {
virBufferAddLit(&buf, " <capability type='virt_functions'>\n"); virBufferAddLit(&buf, "<capability type='virt_functions'>\n");
virBufferAdjustIndent(&buf, 2);
for (i = 0; i < data->pci_dev.num_virtual_functions; i++) { for (i = 0; i < data->pci_dev.num_virtual_functions; i++) {
virBufferAsprintf(&buf, virBufferAsprintf(&buf,
" <address domain='0x%.4x' bus='0x%.2x' " "<address domain='0x%.4x' bus='0x%.2x' "
"slot='0x%.2x' function='0x%.1x'/>\n", "slot='0x%.2x' function='0x%.1x'/>\n",
data->pci_dev.virtual_functions[i]->domain, data->pci_dev.virtual_functions[i]->domain,
data->pci_dev.virtual_functions[i]->bus, data->pci_dev.virtual_functions[i]->bus,
data->pci_dev.virtual_functions[i]->slot, data->pci_dev.virtual_functions[i]->slot,
data->pci_dev.virtual_functions[i]->function); data->pci_dev.virtual_functions[i]->function);
} }
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} }
if (data->pci_dev.nIommuGroupDevices) { if (data->pci_dev.nIommuGroupDevices) {
virBufferAsprintf(&buf, " <iommuGroup number='%d'>\n", virBufferAsprintf(&buf, "<iommuGroup number='%d'>\n",
data->pci_dev.iommuGroupNumber); data->pci_dev.iommuGroupNumber);
virBufferAdjustIndent(&buf, 2);
for (i = 0; i < data->pci_dev.nIommuGroupDevices; i++) { for (i = 0; i < data->pci_dev.nIommuGroupDevices; i++) {
virBufferAsprintf(&buf, virBufferAsprintf(&buf,
" <address domain='0x%.4x' bus='0x%.2x' " "<address domain='0x%.4x' bus='0x%.2x' "
"slot='0x%.2x' function='0x%.1x'/>\n", "slot='0x%.2x' function='0x%.1x'/>\n",
data->pci_dev.iommuGroupDevices[i]->domain, data->pci_dev.iommuGroupDevices[i]->domain,
data->pci_dev.iommuGroupDevices[i]->bus, data->pci_dev.iommuGroupDevices[i]->bus,
data->pci_dev.iommuGroupDevices[i]->slot, data->pci_dev.iommuGroupDevices[i]->slot,
data->pci_dev.iommuGroupDevices[i]->function); data->pci_dev.iommuGroupDevices[i]->function);
} }
virBufferAddLit(&buf, " </iommuGroup>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</iommuGroup>\n");
} }
break; break;
case VIR_NODE_DEV_CAP_USB_DEV: case VIR_NODE_DEV_CAP_USB_DEV:
virBufferAsprintf(&buf, " <bus>%d</bus>\n", data->usb_dev.bus); virBufferAsprintf(&buf, "<bus>%d</bus>\n", data->usb_dev.bus);
virBufferAsprintf(&buf, " <device>%d</device>\n", virBufferAsprintf(&buf, "<device>%d</device>\n",
data->usb_dev.device); data->usb_dev.device);
virBufferAsprintf(&buf, " <product id='0x%04x'", virBufferAsprintf(&buf, "<product id='0x%04x'",
data->usb_dev.product); data->usb_dev.product);
if (data->usb_dev.product_name) if (data->usb_dev.product_name)
virBufferEscapeString(&buf, ">%s</product>\n", virBufferEscapeString(&buf, ">%s</product>\n",
data->usb_dev.product_name); data->usb_dev.product_name);
else else
virBufferAddLit(&buf, " />\n"); virBufferAddLit(&buf, " />\n");
virBufferAsprintf(&buf, " <vendor id='0x%04x'", virBufferAsprintf(&buf, "<vendor id='0x%04x'",
data->usb_dev.vendor); data->usb_dev.vendor);
if (data->usb_dev.vendor_name) if (data->usb_dev.vendor_name)
virBufferEscapeString(&buf, ">%s</vendor>\n", virBufferEscapeString(&buf, ">%s</vendor>\n",
@ -354,130 +367,132 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *def)
virBufferAddLit(&buf, " />\n"); virBufferAddLit(&buf, " />\n");
break; break;
case VIR_NODE_DEV_CAP_USB_INTERFACE: case VIR_NODE_DEV_CAP_USB_INTERFACE:
virBufferAsprintf(&buf, " <number>%d</number>\n", virBufferAsprintf(&buf, "<number>%d</number>\n",
data->usb_if.number); data->usb_if.number);
virBufferAsprintf(&buf, " <class>%d</class>\n", virBufferAsprintf(&buf, "<class>%d</class>\n",
data->usb_if._class); data->usb_if._class);
virBufferAsprintf(&buf, " <subclass>%d</subclass>\n", virBufferAsprintf(&buf, "<subclass>%d</subclass>\n",
data->usb_if.subclass); data->usb_if.subclass);
virBufferAsprintf(&buf, " <protocol>%d</protocol>\n", virBufferAsprintf(&buf, "<protocol>%d</protocol>\n",
data->usb_if.protocol); data->usb_if.protocol);
if (data->usb_if.description) if (data->usb_if.description)
virBufferEscapeString(&buf, virBufferEscapeString(&buf,
" <description>%s</description>\n", "<description>%s</description>\n",
data->usb_if.description); data->usb_if.description);
break; break;
case VIR_NODE_DEV_CAP_NET: case VIR_NODE_DEV_CAP_NET:
virBufferEscapeString(&buf, " <interface>%s</interface>\n", virBufferEscapeString(&buf, "<interface>%s</interface>\n",
data->net.ifname); data->net.ifname);
if (data->net.address) if (data->net.address)
virBufferEscapeString(&buf, " <address>%s</address>\n", virBufferEscapeString(&buf, "<address>%s</address>\n",
data->net.address); data->net.address);
if (data->net.subtype != VIR_NODE_DEV_CAP_NET_LAST) { if (data->net.subtype != VIR_NODE_DEV_CAP_NET_LAST) {
const char *subtyp = const char *subtyp =
virNodeDevNetCapTypeToString(data->net.subtype); virNodeDevNetCapTypeToString(data->net.subtype);
virBufferEscapeString(&buf, " <capability type='%s'/>\n", virBufferEscapeString(&buf, "<capability type='%s'/>\n",
subtyp); subtyp);
} }
break; break;
case VIR_NODE_DEV_CAP_SCSI_HOST: case VIR_NODE_DEV_CAP_SCSI_HOST:
virBufferAsprintf(&buf, " <host>%d</host>\n", virBufferAsprintf(&buf, "<host>%d</host>\n",
data->scsi_host.host); data->scsi_host.host);
if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST) { if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST) {
virBufferAddLit(&buf, " <capability type='fc_host'>\n"); virBufferAddLit(&buf, "<capability type='fc_host'>\n");
virBufferEscapeString(&buf, " <wwnn>%s</wwnn>\n", virBufferAdjustIndent(&buf, 2);
virBufferEscapeString(&buf, "<wwnn>%s</wwnn>\n",
data->scsi_host.wwnn); data->scsi_host.wwnn);
virBufferEscapeString(&buf, " <wwpn>%s</wwpn>\n", virBufferEscapeString(&buf, "<wwpn>%s</wwpn>\n",
data->scsi_host.wwpn); data->scsi_host.wwpn);
virBufferEscapeString(&buf, " <fabric_wwn>%s</fabric_wwn>\n", virBufferEscapeString(&buf, "<fabric_wwn>%s</fabric_wwn>\n",
data->scsi_host.fabric_wwn); data->scsi_host.fabric_wwn);
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} }
if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS) { if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS) {
virBufferAddLit(&buf, " <capability type='vport_ops'>\n"); virBufferAddLit(&buf, "<capability type='vport_ops'>\n");
virBufferAsprintf(&buf, " <max_vports>%d</max_vports>\n", virBufferAdjustIndent(&buf, 2);
virBufferAsprintf(&buf, "<max_vports>%d</max_vports>\n",
data->scsi_host.max_vports); data->scsi_host.max_vports);
virBufferAsprintf(&buf, " <vports>%d</vports>\n", virBufferAsprintf(&buf, "<vports>%d</vports>\n",
data->scsi_host.vports); data->scsi_host.vports);
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} }
break; break;
case VIR_NODE_DEV_CAP_SCSI_TARGET: case VIR_NODE_DEV_CAP_SCSI_TARGET:
virBufferEscapeString(&buf, " <target>%s</target>\n", virBufferEscapeString(&buf, "<target>%s</target>\n",
data->scsi_target.name); data->scsi_target.name);
break; break;
case VIR_NODE_DEV_CAP_SCSI: case VIR_NODE_DEV_CAP_SCSI:
virBufferAsprintf(&buf, " <host>%d</host>\n", data->scsi.host); virBufferAsprintf(&buf, "<host>%d</host>\n", data->scsi.host);
virBufferAsprintf(&buf, " <bus>%d</bus>\n", data->scsi.bus); virBufferAsprintf(&buf, "<bus>%d</bus>\n", data->scsi.bus);
virBufferAsprintf(&buf, " <target>%d</target>\n", virBufferAsprintf(&buf, "<target>%d</target>\n",
data->scsi.target); data->scsi.target);
virBufferAsprintf(&buf, " <lun>%d</lun>\n", data->scsi.lun); virBufferAsprintf(&buf, "<lun>%d</lun>\n", data->scsi.lun);
if (data->scsi.type) if (data->scsi.type)
virBufferEscapeString(&buf, " <type>%s</type>\n", virBufferEscapeString(&buf, "<type>%s</type>\n",
data->scsi.type); data->scsi.type);
break; break;
case VIR_NODE_DEV_CAP_STORAGE: case VIR_NODE_DEV_CAP_STORAGE:
virBufferEscapeString(&buf, " <block>%s</block>\n", virBufferEscapeString(&buf, "<block>%s</block>\n",
data->storage.block); data->storage.block);
if (data->storage.bus) if (data->storage.bus)
virBufferEscapeString(&buf, " <bus>%s</bus>\n", virBufferEscapeString(&buf, "<bus>%s</bus>\n",
data->storage.bus); data->storage.bus);
if (data->storage.drive_type) if (data->storage.drive_type)
virBufferEscapeString(&buf, " <drive_type>%s</drive_type>\n", virBufferEscapeString(&buf, "<drive_type>%s</drive_type>\n",
data->storage.drive_type); data->storage.drive_type);
if (data->storage.model) if (data->storage.model)
virBufferEscapeString(&buf, " <model>%s</model>\n", virBufferEscapeString(&buf, "<model>%s</model>\n",
data->storage.model); data->storage.model);
if (data->storage.vendor) if (data->storage.vendor)
virBufferEscapeString(&buf, " <vendor>%s</vendor>\n", virBufferEscapeString(&buf, "<vendor>%s</vendor>\n",
data->storage.vendor); data->storage.vendor);
if (data->storage.serial) if (data->storage.serial)
virBufferAsprintf(&buf, " <serial>%s</serial>\n", virBufferAsprintf(&buf, "<serial>%s</serial>\n",
data->storage.serial); data->storage.serial);
if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) { if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) {
int avl = data->storage.flags & int avl = data->storage.flags &
VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE; VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE;
virBufferAddLit(&buf, " <capability type='removable'>\n"); virBufferAddLit(&buf, "<capability type='removable'>\n");
virBufferAsprintf(&buf, virBufferAdjustIndent(&buf, 2);
" <media_available>%d" virBufferAsprintf(&buf, "<media_available>%d"
"</media_available>\n", avl ? 1 : 0); "</media_available>\n", avl ? 1 : 0);
virBufferAsprintf(&buf, " <media_size>%llu</media_size>\n", virBufferAsprintf(&buf, "<media_size>%llu</media_size>\n",
data->storage.removable_media_size); data->storage.removable_media_size);
if (data->storage.media_label) if (data->storage.media_label)
virBufferEscapeString(&buf, virBufferEscapeString(&buf,
" <media_label>%s</media_label>\n", "<media_label>%s</media_label>\n",
data->storage.media_label); data->storage.media_label);
if (data->storage.logical_block_size > 0) if (data->storage.logical_block_size > 0)
virBufferAsprintf(&buf, " <logical_block_size>%llu" virBufferAsprintf(&buf, "<logical_block_size>%llu"
"</logical_block_size>\n", "</logical_block_size>\n",
data->storage.logical_block_size); data->storage.logical_block_size);
if (data->storage.num_blocks > 0) if (data->storage.num_blocks > 0)
virBufferAsprintf(&buf, virBufferAsprintf(&buf,
" <num_blocks>%llu</num_blocks>\n", "<num_blocks>%llu</num_blocks>\n",
data->storage.num_blocks); data->storage.num_blocks);
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} else { } else {
virBufferAsprintf(&buf, " <size>%llu</size>\n", virBufferAsprintf(&buf, "<size>%llu</size>\n",
data->storage.size); data->storage.size);
if (data->storage.logical_block_size > 0) if (data->storage.logical_block_size > 0)
virBufferAsprintf(&buf, " <logical_block_size>%llu" virBufferAsprintf(&buf, "<logical_block_size>%llu"
"</logical_block_size>\n", "</logical_block_size>\n",
data->storage.logical_block_size); data->storage.logical_block_size);
if (data->storage.num_blocks > 0) if (data->storage.num_blocks > 0)
virBufferAsprintf(&buf, virBufferAsprintf(&buf, "<num_blocks>%llu</num_blocks>\n",
" <num_blocks>%llu</num_blocks>\n",
data->storage.num_blocks); data->storage.num_blocks);
} }
if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_HOTPLUGGABLE) if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_HOTPLUGGABLE)
virBufferAddLit(&buf, virBufferAddLit(&buf, "<capability type='hotpluggable' />\n");
" <capability type='hotpluggable' />\n");
break; break;
case VIR_NODE_DEV_CAP_SCSI_GENERIC: case VIR_NODE_DEV_CAP_SCSI_GENERIC:
virBufferEscapeString(&buf, " <char>%s</char>\n", virBufferEscapeString(&buf, "<char>%s</char>\n",
data->sg.path); data->sg.path);
break; break;
case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_FC_HOST:
@ -487,9 +502,11 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDef *def)
break; break;
} }
virBufferAddLit(&buf, " </capability>\n"); virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</capability>\n");
} }
virBufferAdjustIndent(&buf, -2);
virBufferAddLit(&buf, "</device>\n"); virBufferAddLit(&buf, "</device>\n");
if (virBufferError(&buf)) if (virBufferError(&buf))