diff --git a/ChangeLog b/ChangeLog index c7074d9eef..30c35c6759 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Wed Dec 17 18:10:39 GMT 2008 Daniel P. Berrange + + Anonymous union fixes for non-GCC compilers (John Levon) + * domain_conf.c, qemu_conf.c, qemu_driver.c: Remove use + of anonymous union + * domain_conf.h: Give a name to the anonymous union for + host devices. Add 'dummy' field to avoid empty struct + * remote_internal.c: Remove gcc-ism in empty "x ? : y" + Wed Dec 17 19:06:53 +0100 2008 Jim Meyering portability: don't include or diff --git a/src/domain_conf.c b/src/domain_conf.c index 75f32e5b11..d91a053eaf 100644 --- a/src/domain_conf.c +++ b/src/domain_conf.c @@ -1479,7 +1479,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn, if (vendor) { if (virStrToLong_ui(vendor, NULL, 0, - &def->source.subsys.usb.vendor) < 0) { + &def->source.subsys.u.usb.vendor) < 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot parse vendor id %s"), vendor); VIR_FREE(vendor); @@ -1496,7 +1496,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn, if (product) { if (virStrToLong_ui(product, NULL, 0, - &def->source.subsys.usb.product) < 0) { + &def->source.subsys.u.usb.product) < 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot parse product %s"), product); VIR_FREE(product); @@ -1514,7 +1514,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn, bus = virXMLPropString(cur, "bus"); if (bus) { if (virStrToLong_ui(bus, NULL, 0, - &def->source.subsys.usb.bus) < 0) { + &def->source.subsys.u.usb.bus) < 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot parse bus %s"), bus); VIR_FREE(bus); @@ -1530,7 +1530,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn, device = virXMLPropString(cur, "device"); if (device) { if (virStrToLong_ui(device, NULL, 0, - &def->source.subsys.usb.device) < 0) { + &def->source.subsys.u.usb.device) < 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot parse device %s"), device); @@ -1552,14 +1552,14 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn, cur = cur->next; } - if (def->source.subsys.usb.vendor == 0 && - def->source.subsys.usb.product != 0) { + if (def->source.subsys.u.usb.vendor == 0 && + def->source.subsys.u.usb.product != 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s", _("missing vendor")); goto out; } - if (def->source.subsys.usb.vendor != 0 && - def->source.subsys.usb.product == 0) { + if (def->source.subsys.u.usb.vendor != 0 && + def->source.subsys.u.usb.product == 0) { virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s", _("missing product")); goto out; @@ -3004,15 +3004,15 @@ virDomainHostdevDefFormat(virConnectPtr conn, virBufferVSprintf(buf, " \n", mode, type); virBufferAddLit(buf, " \n"); - if (def->source.subsys.usb.vendor) { + if (def->source.subsys.u.usb.vendor) { virBufferVSprintf(buf, " \n", - def->source.subsys.usb.vendor); + def->source.subsys.u.usb.vendor); virBufferVSprintf(buf, " \n", - def->source.subsys.usb.product); + def->source.subsys.u.usb.product); } else { virBufferVSprintf(buf, "
\n", - def->source.subsys.usb.bus, - def->source.subsys.usb.device); + def->source.subsys.u.usb.bus, + def->source.subsys.u.usb.device); } virBufferAddLit(buf, " \n"); diff --git a/src/domain_conf.h b/src/domain_conf.h index d6029ee3f9..d8a31743c0 100644 --- a/src/domain_conf.h +++ b/src/domain_conf.h @@ -308,12 +308,13 @@ struct _virDomainHostdevDef { unsigned slot; unsigned function; } pci; - }; + } u; } subsys; struct { /* TBD: struct capabilities see: * https://www.redhat.com/archives/libvir-list/2008-July/msg00429.html */ + int dummy; } caps; } source; char* target; diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 312f64674b..99bb00bfe7 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -1263,15 +1263,15 @@ int qemudBuildCommandLine(virConnectPtr conn, if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) { - if(hostdev->source.subsys.usb.vendor) { + if(hostdev->source.subsys.u.usb.vendor) { ret = asprintf(&usbdev, "host:%.4x:%.4x", - hostdev->source.subsys.usb.vendor, - hostdev->source.subsys.usb.product); + hostdev->source.subsys.u.usb.vendor, + hostdev->source.subsys.u.usb.product); } else { ret = asprintf(&usbdev, "host:%.3d.%.3d", - hostdev->source.subsys.usb.bus, - hostdev->source.subsys.usb.device); + hostdev->source.subsys.u.usb.bus, + hostdev->source.subsys.u.usb.device); } if (ret < 0) { usbdev = NULL; diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 40016cb017..3cd843c0f6 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -3107,14 +3107,14 @@ static int qemudDomainAttachHostDevice(virConnectPtr conn, return -1; } - if (dev->data.hostdev->source.subsys.usb.vendor) { + if (dev->data.hostdev->source.subsys.u.usb.vendor) { ret = asprintf(&cmd, "usb_add host:%.4x:%.4x", - dev->data.hostdev->source.subsys.usb.vendor, - dev->data.hostdev->source.subsys.usb.product); + dev->data.hostdev->source.subsys.u.usb.vendor, + dev->data.hostdev->source.subsys.u.usb.product); } else { ret = asprintf(&cmd, "usb_add host:%.3d.%.3d", - dev->data.hostdev->source.subsys.usb.bus, - dev->data.hostdev->source.subsys.usb.device); + dev->data.hostdev->source.subsys.u.usb.bus, + dev->data.hostdev->source.subsys.u.usb.device); } if (ret == -1) { qemudReportError(conn, NULL, NULL, VIR_ERR_NO_MEMORY, NULL); diff --git a/src/remote_internal.c b/src/remote_internal.c index 1d0c5ac337..0999a4e9bc 100644 --- a/src/remote_internal.c +++ b/src/remote_internal.c @@ -649,7 +649,7 @@ doRemoteOpen (virConnectPtr conn, if (username) nr_args += 2; /* For -l username */ if (no_tty) nr_args += 5; /* For -T -o BatchMode=yes -e none */ - command = command ? : strdup ("ssh"); + command = command ? command : strdup ("ssh"); if (command == NULL) goto out_of_memory;