On 7/22/25 17:12, Kirill Shchetiniuk via Devel wrote:
> From: Kirill Shchetiniuk <kshch...@redhat.com>
> 
> Refactored the virSecretLookupParseSecret fucntion to use the
> virXMLPropUUID fucntion, avoid getting the string and parsing it
> later. Previously two separate error states merged into one by using
> boolean NXOR operation.
> 
> Signed-off-by: Kirill Shchetiniuk <kshch...@redhat.com>
> ---
>  src/util/virsecret.c | 19 ++++++-------------
>  1 file changed, 6 insertions(+), 13 deletions(-)
> 
> diff --git a/src/util/virsecret.c b/src/util/virsecret.c
> index 8a220a37ec..d85a563949 100644
> --- a/src/util/virsecret.c
> +++ b/src/util/virsecret.c
> @@ -64,34 +64,27 @@ int
>  virSecretLookupParseSecret(xmlNodePtr secretnode,
>                             virSecretLookupTypeDef *def)
>  {
> -    g_autofree char *uuid = NULL;
>      g_autofree char *usage = NULL;
> +    int rc;
>  
> -    uuid = virXMLPropString(secretnode, "uuid");
>      usage = virXMLPropString(secretnode, "usage");
> -    if (uuid == NULL && usage == NULL) {
> -        virReportError(VIR_ERR_XML_ERROR, "%s",
> -                       _("missing secret uuid or usage attribute"));
> +
> +    if ((rc = virXMLPropUUID(secretnode, "uuid", VIR_XML_PROP_NONE, 
> def->u.uuid)) < 0)
>          return -1;
> -    }
>  
> -    if (uuid && usage) {
> +    if (!usage == (rc == 0)) {

This works, but it's horrible to read. Since we already ...

>          virReportError(VIR_ERR_XML_ERROR, "%s",
>                         _("either secret uuid or usage expected"));
>          return -1;
>      }
>  
> -    if (uuid) {
> -        if (virUUIDParse(uuid, def->u.uuid) < 0) {
> -            virReportError(VIR_ERR_XML_ERROR,
> -                           _("invalid secret uuid '%1$s'"), uuid);
> -            return -1;
> -        }
> +    if (rc > 0) {

have different branches when "uuid" attribute was present or not, might
as well put corresponding checks here.

>          def->type = VIR_SECRET_LOOKUP_TYPE_UUID;
>      } else {
>          def->u.usage = g_steal_pointer(&usage);
>          def->type = VIR_SECRET_LOOKUP_TYPE_USAGE;
>      }
> +
>      return 0;
>  }
>  

Michal

Reply via email to