[libvirt] [PATCHv2 2/3] conf: Add new 'append' attribute for chardevs with file source

John Ferlan jferlan at redhat.com
Sat Dec 26 11:53:54 UTC 2015


[...]

Was it intentional to not have the break;'s in the new switches?

Coverity complains, thrice...

> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 5200c27..87571cd 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -1722,9 +1722,10 @@ virDomainChrSourceDefCopy(virDomainChrSourceDefPtr dest,
>      virDomainChrSourceDefClear(dest);
>  
>      switch (src->type) {
> +    case VIR_DOMAIN_CHR_TYPE_FILE:
> +        dest->data.file.append = src->data.file.append;

here

>      case VIR_DOMAIN_CHR_TYPE_PTY:
>      case VIR_DOMAIN_CHR_TYPE_DEV:
> -    case VIR_DOMAIN_CHR_TYPE_FILE:
>      case VIR_DOMAIN_CHR_TYPE_PIPE:
>          if (VIR_STRDUP(dest->data.file.path, src->data.file.path) < 0)
>              return -1;
> @@ -1796,9 +1797,12 @@ virDomainChrSourceDefIsEqual(const virDomainChrSourceDef *src,
>          return false;
>  
>      switch ((virDomainChrType)src->type) {
> +    case VIR_DOMAIN_CHR_TYPE_FILE:
> +        return src->data.file.append == tgt->data.file.append &&
> +            STREQ_NULLABLE(src->data.file.path, tgt->data.file.path);
> +        break;
>      case VIR_DOMAIN_CHR_TYPE_PTY:
>      case VIR_DOMAIN_CHR_TYPE_DEV:
> -    case VIR_DOMAIN_CHR_TYPE_FILE:
>      case VIR_DOMAIN_CHR_TYPE_PIPE:
>          return STREQ_NULLABLE(src->data.file.path, tgt->data.file.path);
>          break;
> @@ -9371,6 +9375,7 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
>      char *channel = NULL;
>      char *master = NULL;
>      char *slave = NULL;
> +    char *append = NULL;
>      int remaining = 0;
>  
>      while (cur != NULL) {
> @@ -9380,9 +9385,11 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
>                      mode = virXMLPropString(cur, "mode");
>  
>                  switch ((virDomainChrType) def->type) {
> +                case VIR_DOMAIN_CHR_TYPE_FILE:
> +                    if (!append)
> +                        append = virXMLPropString(cur, "append");

here

>                  case VIR_DOMAIN_CHR_TYPE_PTY:
>                  case VIR_DOMAIN_CHR_TYPE_DEV:
> -                case VIR_DOMAIN_CHR_TYPE_FILE:
>                  case VIR_DOMAIN_CHR_TYPE_PIPE:
>                  case VIR_DOMAIN_CHR_TYPE_UNIX:
>                      /* PTY path is only parsed from live xml.  */
> @@ -9468,9 +9475,15 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def,
>      case VIR_DOMAIN_CHR_TYPE_LAST:
>          break;
>  
> +    case VIR_DOMAIN_CHR_TYPE_FILE:
> +        if (append &&
> +            (def->data.file.append = virTristateSwitchTypeFromString(append)) <= 0) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("Invalid append attribute value '%s'"), append);
> +            goto error;
> +        }

here

>      case VIR_DOMAIN_CHR_TYPE_PTY:
>      case VIR_DOMAIN_CHR_TYPE_DEV:
> -    case VIR_DOMAIN_CHR_TYPE_FILE:
>      case VIR_DOMAIN_CHR_TYPE_PIPE:
>          if (!path &&
>              def->type != VIR_DOMAIN_CHR_TYPE_PTY) {
>

John




More information about the libvir-list mailing list