[libvirt] [PATCH] qemu: minor cleanups
Christophe Fergeau
cfergeau at redhat.com
Mon Feb 3 17:52:49 UTC 2014
On Fri, Jan 31, 2014 at 05:08:32PM +0100, Martin Kletzander wrote:
> Some cleanups around serial chardevs and miscellaneous things I've
> found inconsistent or not very clean.
A few comments below, I'd tend to split at least the bigger bits in
separate patches to avoid a bunch of unrelated changes in a single commit
Christophe
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/conf/domain_conf.c | 43 ++++++++++++++++++++++++++-----------------
> src/qemu/qemu_capabilities.c | 4 ++--
> src/qemu/qemu_command.c | 10 ++++++++--
> 3 files changed, 36 insertions(+), 21 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 28e24f9..fa1ecb5 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -1559,7 +1559,7 @@ virDomainChrSourceDefIsEqual(const virDomainChrSourceDef *src,
> if (tgt->type != src->type)
> return false;
>
> - switch (src->type) {
> + switch ((enum virDomainChrType)src->type) {
Not sure this one improves things, the type of the enum is in the
namespacing of the values anyway (VIR_DOMAIN_CHR_TYPE_*), and it's only
done for a minority of the switch() calls in domain_conf.c
> case VIR_DOMAIN_CHR_TYPE_PTY:
> case VIR_DOMAIN_CHR_TYPE_DEV:
> case VIR_DOMAIN_CHR_TYPE_FILE:
> @@ -1583,16 +1583,22 @@ virDomainChrSourceDefIsEqual(const virDomainChrSourceDef *src,
> STREQ_NULLABLE(src->data.nix.path, tgt->data.nix.path);
> break;
>
> + case VIR_DOMAIN_CHR_TYPE_NULL:
> case VIR_DOMAIN_CHR_TYPE_VC:
> case VIR_DOMAIN_CHR_TYPE_STDIO:
> case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
> + case VIR_DOMAIN_CHR_TYPE_LAST:
> /* nada */
> return true;
> }
>
> - /* This should happen only on new,
> - * yet unhandled type */
> + /* Even though gcc is able to detect that all possible values are
> + * handled in the switch above, it is not capable of realizing
> + * there isn't any possibility of escaping that switch without
> + * return. So for the sake of clean compilation, there has to be
> + * a return here */
>
> + /* coverity[dead_error_begin] */
> return false;
> }
>
> @@ -6415,7 +6421,7 @@ error:
> }
>
> #define NET_MODEL_CHARS \
> - "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ091234567890_-"
> + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-"
>
> /* Parse the XML definition for a network interface
> * @param node XML nodeset to parse for net definition
> @@ -7182,11 +7188,11 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
> }
>
> switch ((enum virDomainChrType) def->type) {
> - case VIR_DOMAIN_CHR_TYPE_LAST:
> case VIR_DOMAIN_CHR_TYPE_NULL:
> + case VIR_DOMAIN_CHR_TYPE_VC:
> case VIR_DOMAIN_CHR_TYPE_STDIO:
> case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
> - case VIR_DOMAIN_CHR_TYPE_VC:
> + case VIR_DOMAIN_CHR_TYPE_LAST:
> break;
>
> case VIR_DOMAIN_CHR_TYPE_PTY:
> @@ -15573,11 +15579,13 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
> }
> virBufferAddLit(buf, ">\n");
>
> - switch (def->type) {
> + virBufferAdjustIndent(buf, 6);
> + switch ((enum virDomainChrType)def->type) {
> case VIR_DOMAIN_CHR_TYPE_NULL:
> case VIR_DOMAIN_CHR_TYPE_VC:
> case VIR_DOMAIN_CHR_TYPE_STDIO:
> case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
> + case VIR_DOMAIN_CHR_TYPE_LAST:
> /* nada */
> break;
>
> @@ -15588,7 +15596,7 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
> if (def->type != VIR_DOMAIN_CHR_TYPE_PTY ||
> (def->data.file.path &&
> !(flags & VIR_DOMAIN_XML_INACTIVE))) {
> - virBufferEscapeString(buf, " <source path='%s'/>\n",
> + virBufferEscapeString(buf, "<source path='%s'/>\n",
> def->data.file.path);
> }
> break;
> @@ -15597,53 +15605,54 @@ virDomainChrSourceDefFormat(virBufferPtr buf,
> if (def->data.udp.bindService &&
> def->data.udp.bindHost) {
> virBufferAsprintf(buf,
> - " <source mode='bind' host='%s' "
> + "<source mode='bind' host='%s' "
> "service='%s'/>\n",
> def->data.udp.bindHost,
> def->data.udp.bindService);
> } else if (def->data.udp.bindHost) {
> - virBufferAsprintf(buf, " <source mode='bind' host='%s'/>\n",
> + virBufferAsprintf(buf, "<source mode='bind' host='%s'/>\n",
> def->data.udp.bindHost);
> } else if (def->data.udp.bindService) {
> - virBufferAsprintf(buf, " <source mode='bind' service='%s'/>\n",
> + virBufferAsprintf(buf, "<source mode='bind' service='%s'/>\n",
> def->data.udp.bindService);
> }
>
> if (def->data.udp.connectService &&
> def->data.udp.connectHost) {
> virBufferAsprintf(buf,
> - " <source mode='connect' host='%s' "
> + "<source mode='connect' host='%s' "
> "service='%s'/>\n",
> def->data.udp.connectHost,
> def->data.udp.connectService);
> } else if (def->data.udp.connectHost) {
> - virBufferAsprintf(buf, " <source mode='connect' host='%s'/>\n",
> + virBufferAsprintf(buf, "<source mode='connect' host='%s'/>\n",
> def->data.udp.connectHost);
> } else if (def->data.udp.connectService) {
> virBufferAsprintf(buf,
> - " <source mode='connect' service='%s'/>\n",
> + "<source mode='connect' service='%s'/>\n",
> def->data.udp.connectService);
> }
> break;
>
> case VIR_DOMAIN_CHR_TYPE_TCP:
> virBufferAsprintf(buf,
> - " <source mode='%s' host='%s' service='%s'/>\n",
> + "<source mode='%s' host='%s' service='%s'/>\n",
> def->data.tcp.listen ? "bind" : "connect",
> def->data.tcp.host,
> def->data.tcp.service);
> - virBufferAsprintf(buf, " <protocol type='%s'/>\n",
> + virBufferAsprintf(buf, "<protocol type='%s'/>\n",
> virDomainChrTcpProtocolTypeToString(
> def->data.tcp.protocol));
> break;
>
> case VIR_DOMAIN_CHR_TYPE_UNIX:
> - virBufferAsprintf(buf, " <source mode='%s'",
> + virBufferAsprintf(buf, "<source mode='%s'",
> def->data.nix.listen ? "bind" : "connect");
> virBufferEscapeString(buf, " path='%s'", def->data.nix.path);
> virBufferAddLit(buf, "/>\n");
> break;
> }
> + virBufferAdjustIndent(buf, -6);
>
> return 0;
> }
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index 8420047..8aec293 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -1,7 +1,7 @@
> /*
> * qemu_capabilities.c: QEMU capabilities generation
> *
> - * Copyright (C) 2006-2013 Red Hat, Inc.
> + * Copyright (C) 2006-2014 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> *
> * This library is free software; you can redistribute it and/or
> @@ -247,7 +247,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
> "boot-strict", /* 160 */
> "pvpanic",
> "enable-fips",
> - "spice-file-xfer-disable"
> + "spice-file-xfer-disable",
> );
>
> struct _virQEMUCaps {
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 96b8825..2db745a 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1,7 +1,7 @@
> /*
> * qemu_command.c: QEMU command generation
> *
> - * Copyright (C) 2006-2013 Red Hat, Inc.
> + * Copyright (C) 2006-2014 Red Hat, Inc.
> * Copyright (C) 2006 Daniel P. Berrange
> *
> * This library is free software; you can redistribute it and/or
> @@ -6004,7 +6004,7 @@ qemuBuildChrArgStr(virDomainChrSourceDefPtr dev, const char *prefix)
> if (prefix)
> virBufferAdd(&buf, prefix, strlen(prefix));
>
> - switch (dev->type) {
> + switch ((enum virDomainChrType)dev->type) {
> case VIR_DOMAIN_CHR_TYPE_NULL:
> virBufferAddLit(&buf, "null");
> break;
> @@ -6071,6 +6071,12 @@ qemuBuildChrArgStr(virDomainChrSourceDefPtr dev, const char *prefix)
> dev->data.nix.path,
> dev->data.nix.listen ? ",server,nowait" : "");
> break;
> +
> + case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
> + /* spicevmc doesn't have any '-serial' compatible option */
This is misleading as this function is also called for -monitor, and
-parallel.
> + case VIR_DOMAIN_CHR_TYPE_LAST:
> + /* coverity[dead_error_begin] */
> + break;
> }
>
> if (virBufferError(&buf)) {
> --
> 1.8.5.3
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140203/b1238bac/attachment-0001.sig>
More information about the libvir-list
mailing list